面向对象彻底性、权限访问、垃圾回收

面向对象彻底性

历史的潮流不断告诉我们,没有什么可以一步到位,如果是,那大概率是发生了极大的事件,比如小行星撞地球。

编程语言的面向对象级别

  • C++比较折中,因为它需要尽可能兼容C语言。C++既允许值类型对象,也允许纯对象类型,放入堆栈还是堆,根据程序员的选择。这提供了极大的自由度,控制感非常舒服。

  • Java不允许对象类型放在栈中,所有非基本类型都必然的堆对象。

权限访问

社会本身就有限制和权限,在公网写博客是public, 不管是公司还是其他任何人都可以看。为本部门写的代码对本部门可能是public,其他部门是protected, 外部是private. 间谍战写了一些不可告人的代码,这是private.

main函数的权限

  • 一般而言main函数是public, 对于C语言,无public和private概念,就当做是public.

  • C#允许不是public, 甚至可以是private, 但如果外部显式调用,需要是public.

  • Java的Main函数必须是public, 否则,可以编译通过,运行时会提示找不到main方法。

垃圾回收

在计算机世界,尤其是用指针的大型工程,内存申请和释放可能是灾难。虽然内存很重要,申请可能不太会犯错,但做到正确释放会让你把头发抓完。这也许是为什么程序员把重要的内存说成垃圾的原因,也许只有这样才能让自己好受一些。

垃圾回收的支持

  • ObjC提供@autoreleasepool ARC机制,可轻松释放pool中不用的内存。

  • C++语言级别没有直接支持垃圾回收机制,用智能指针做支持。

  • Java/C#都有垃圾回收,垃圾回收方便有效,不用程序员参与,写代码溜得飞起,一问发生了什么问题,可能就是内存爆了,内存爆了怪谁,怪机器呗,加内存条! 成功把内存问题和自己脱钩~

  • 但并非所有的资源都是自动释放,比如和操作系统息息相关的文件、句柄资源,任何编程语言都没有足够的把握去自动回收,这些资源依然要求程序员写代码显式释放,比如Java的finalize函数和C#的Dispose.


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关推荐
RainCity4 分钟前
Java Swing 自定义组件库分享(四)
java·笔记·后端
诙_7 分钟前
C++代码实践应用
开发语言·c++
带刺的坐椅16 分钟前
agentscope-harness vs solon-ai-harness:Java 智能体「马具引擎」的双雄对决
java·ai·llm·solon·agentscope·harness
Seven9719 分钟前
Paxos算法:如何解决分布式系统中的共识问题?
java
Little At Air25 分钟前
LinuxOS阻塞队列模型(单生产者单消费者)
linux·数据结构·c++
念恒1230629 分钟前
基础IO(一切皆文件)
linux·c语言·c++·算法
铁皮哥1 小时前
【力扣题解】LeetCode 25. K 个一组翻转链表
java·数据结构·windows·python·算法·leetcode·链表
小新同学^O^1 小时前
简单学习 --> 单例模式
java·学习·多线程
Henray20241 小时前
LRU缓存设计与实现
java·面试
Irissgwe1 小时前
四、进程控制(进程创建与终止)
linux·c++·进程·系统编程·fork·进程创建·进程终止