编程|C/C++编程笔记:一文带你读懂C++面向对象和Java面向对象的区别
C++与Java都是面向对象的编程语言,同样是面向对面编程,那他们的不同之处今天我们就来看一看吧!
文章插图
引用:
java和c++都有引用的概念,但两者是完全不同的东西,c++的引用是变量的一个别名,引用一旦绑定就不能重新引用其他变量,c++引用也不能为null。java引用更像c++的指针,对引用赋值是重新绑定引用的对象(在c++里面是改变对象的值),引用可以为null(导致了烦人的NPE问题,万恶之源)
【 编程|C/C++编程笔记:一文带你读懂C++面向对象和Java面向对象的区别】类型系统:
java区分值类型与引用类型,用户自定义类型都是引用类型,值类型和引用类型在很多地方不能混用(如泛型参数),c++没有值类型和引用类型的概念,类似的概念是普通类和它的指针类型。
java有根基类Object,c++没有根基类。 
文章插图
访问控制:
都有public,protected,private三级访问控制
此外,java还有包访问控制,c++有友元
继承:
c++分public继承,protected继承(意义不明)和private继承(基本和组合没啥区别),java只有public继承。
c++只能覆盖基类中显式定义的虚函数,java中方法默认是虚的,除非显式标明final
c++支持多重继承,java只支持单继承,但支持实现多个接口(c++没有语法层面上的接口)
小编推荐一个学C语言/C++的学习裙【 一零九五 二九三 四九三 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
文章插图
构造与析构:
对象构造大致相同,但是c++在构造函数中调用虚函数无法多态(因为对象的子类部分还没构造)
c++可以定义析构函数,java没有析构函数(java提供一个终结方法,但它和析构函数不是等价的)
对象生命周期控制:
c++主要靠手动申请,释放内存或者借助析构函数(RAII技术),java依靠gc
异常处理:
c++没有也不需要finally块,释放资源依靠析构函数就行了。 
文章插图
泛型:
c++模板采用代码生成技术,运行时能够保留类型信息,java采用类型擦除,类型信息在运行时就没了(所以其实只是进行安全的自动类型转换而已……)。c++模板参数可以是基本类型,用户自定义类型和整型常量,java只能是引用类型。c++还可以对模板进行特化,java没有这个功能。
- 贵州|现身!百余年前的手绘笔记~记载着奇幻贵州
- 《大秦帝国》读书笔记九:知耻而后勇,为秦始皇横扫天下保驾护航
- 《大秦帝国》笔记五:太后赵姬为什么落得打入雍城冷宫的下场?
- 盗墓笔记:张大佛爷为什么要将二响环传给副官张日山?有何深意?
- 《终极笔记》:张家人基本上都是长寿者,解密张起灵长寿秘诀!
- 爱因斯坦死前为何烧毁所有笔记?专家道出真相:他要隐瞒这个秘密
- 终极笔记:张起灵在陨玉到底看到什么,出来后这么害怕还失忆了?
- 2021年11月16日「学习笔记」学习游击战的几点心得与思考
- 分钟|苏联撤走前,专家拿出自己的笔记本:就20分钟,能记多少就记多少
- 入口|孙殿英之所以能找到慈禧墓的入口,还得感谢李莲英留下的笔记
