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

面向对象彻底性

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

编程语言的面向对象级别

  • 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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关推荐
刘卜卜&嵌入式1 小时前
C++_设计模式_观察者模式(Observer Pattern)
c++·观察者模式·设计模式
h汉堡1 小时前
C++入门基础
开发语言·c++·学习
橘猫云计算机设计1 小时前
基于Springboot的自习室预约系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
java·spring boot·后端·毕业设计
XINVRY-FPGA1 小时前
XCZU7EG‑L1FFVC1156I 赛灵思XilinxFPGA ZynqUltraScale+ MPSoC EG
c++·嵌入式硬件·阿里云·fpga开发·云计算·fpga·pcb工艺
zlbcdn2 小时前
C#处理网络传输中不完整的数据流
c#·不完整数据流
秋书一叶2 小时前
SpringBoot项目打包为window安装包
java·spring boot·后端
碎梦归途2 小时前
23种设计模式-结构型模式之外观模式(Java版本)
java·开发语言·jvm·设计模式·intellij-idea·外观模式
极客先躯2 小时前
高级java每日一道面试题-2025年4月13日-微服务篇[Nacos篇]-Nacos如何处理网络分区情况下的服务可用性问题?
java·服务器·网络·微服务·nacos·高级面试
_GR2 小时前
2025年蓝桥杯第十六届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·贪心算法·蓝桥杯·动态规划
pwzs2 小时前
Spring MVC 执行流程全解析:从请求到响应的七步走
java·后端·spring·spring mvc