C与C++的区别
1. C中没有类,但是C中有struct和union,并且C++扩展了这二者的意义,在C++当中其与类相似,只是默认的访问控制是public的。
2. C++中有引用类型,C中并没有。
3. C并不支持函数的重载,所以在C中没有办法定义两个函数名与返回类型相同但是参数类型不同的函数。
4. 操作符重载是C++特有的。
5. 流操作符>>和<<C++特有的。
6. 继承、虚函数都是C++中的特性。
C++与Java的区别
1. Java编译成字节码运行在JVM上,C++需要编译成二进制代码后才能运行。Java在不同的平台(如Windows和Linux)上只需要编译一次,即可以运行在不同的平台,C++的代码需要针对不同的平台进行编译后才能运行。
2. Java不支持操作符重载、强制类型转换,C++支持这些;
3. C++支持多继承,并且有多种继承方式(public、protected、private),而Java只支持单继承,并且其继承方式与C++中的public继承类似。
4. Java中对接口提供了直接的支持,C++中没有接口定义,可以用纯虚类实现。
5. Java中所有类的声明与定义都是在一起的。C++中类的声明与定义可以分开。并且如果把成员函数的声明与定义放在一起,则默认其是inline函数。
6. C++中成员和成员函数的默认访问控制符是private,默认的继承方式也是private;Java中的默认访问控制是package;
7. C++中有动态内存分配,可以使用C的方式(malloc和free)的方式,以及new和delete的方式。Java使用内存回收机制,无需程序员关心内存分配的情况。
8. C++通过提供指针的方式可以对内存直接进行操作,Java中没有指针,不可以直接访问物理内存。
9. Java中的数组是原生类型,C++中的数组是伪数组。
10. C++中只有被virtual修饰的方法才需要进行运行时动态绑定,而Java中除了static、final、private修饰的方法外,都执行动态绑定。
11. C++中有拷贝构造函数,并且在下面三种情况下会自动调用:
a) 用一个对象初始化另一对象
b) 对象作实参进行函数调用
c) 对象作函数的返回值
12. C++中类的初始化与Java中不同,在C++中有“基类与成员初始化列表”,首先按照继承顺序调用基类的构造函数,然后按照声明顺序调用成员的构造函数。而Java的作法是,
a) 静态变量初始化
b) 静态初始化块(Java)
c) 调用基类的构造函数构造基类对象
d) 实例变量的初始化
e) 构造函数的其余部分
13. Java中函数的入栈方式是从左到右,逐个计算表达式的值并逐个入栈,即计算一个入一个。C++中会将所有的参数表达式都计算完成后再把参数入栈。【这一点C++标准并没有规定,不同的编译器可能会根据优化原则作不同的处理】
相关推荐
《高质量C/C++编程指南》是一份由林锐博士编写的详细指南,旨在帮助软件开发者提高其编程技能并提升软件质量。该指南最初起草于2001年,并在同年7月正式发布,至今仍被广泛认为是C/C++编程领域的一份宝贵资源。 ###...
为了帮助初学者以及那些想要从C语言跳转到C++的程序员们,一份名为《2020最新_C++全套视频教程》的综合资源应运而生。 这份教程专为学习者量身打造,内容全面,旨在通过理论与实践相结合的方式,帮助学习者高效掌握...
### 彻彻底底搞定C/C++指针 #### 前言 姚云飞先生的著作《彻底搞定C指针》是一本极具价值的参考书籍,尤其针对那些在C/C++编程过程中对指针概念感到困惑的学习者。本书旨在帮助读者全面掌握C/C++中的指针操作,并...
《高质量C/C++编程手册》不仅是一本技术指南,更是一部涵盖了良好编程习惯和最佳实践的宝典。通过对上述内容的学习,开发者能够掌握构建高质量、可维护性强的C/C++程序所需的关键技能。此外,该手册还鼓励读者不断...
- **解析**:定期回顾自己写的代码,分析哪些地方可以改进,这是提高编程技能的重要途径之一。 #### 38. 形成良好的编码习惯 - **解析**:良好的编码习惯包括编写清晰的注释、遵循一致的命名规范等。这些习惯不仅能...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...
自2002年出版第一版以来,《实用UML状态图在C与C++中的应用》已经成为关于状态图和事件驱动编程的最热门书籍之一,尤其是在嵌入式系统领域。本书首次提出了一种实用的方法来编码UML 1状态图,并通过C和C++这两种主流...
C++是由Bjarne Stroustup在C语言基础上开发出来的,它在设计之初就将C语言作为基础,这与斯坦福大学教材的发展历史相似。教材的雏形是Eric Roberts于1998年出版的《Programming Abstractions in C》,后来在2002-...
1. **从面向过程到面向对象**:C++对C语言的改进之一是引入了类和对象的概念,这使得C++从一种面向过程的语言转变为支持面向对象编程的语言。因此,选项D“引进了类和对象的概念”是C++变为面向对象语言的主要原因。...
总结这次访谈,我们可以清晰地看到,C++之父对于编程语言设计的深思熟虑,以及他对C++语言设计背后的哲学思考。他对于编程语言发展的见解,不仅让我们对C++有了更深层次的理解,也启发了我们对编程语言未来的种种...
比如Visual C++是Windows环境下非常流行的编译器之一,而其他编译器如GCC则在Linux环境下更为常见。 ### 5. 不要只停留在理论层面,要多实践 理论学习是基础,但实际操作同样重要。通过编写代码、调试程序等方式...
8. **语言之间的独立性**:学习C++不应受制于之前学过的其他语言,即使是C语言,因为C++的设计理念和语法结构都有其独特之处。 9. **掌握标准**:阅读《The Standard C++ Bible》(标准C++宝典),理解并掌握C++的...
3. **27_C.ppt** - C++起源于C语言,这部分可能讲解了C++如何兼容C,包括C风格的指针操作、内存管理、以及C++对C的改进,比如构造函数和析构函数。 4. **25_embedded.ppt** - 针对嵌入式系统编程,可能包含了关于...
- **贡献者**:作者特别感谢了Bjarne Stroustrup和Alex Stepanov等人的贡献和支持,他们是C++语言发展的重要人物之一。 综上所述,《C++ Primer 中文四版TXT版本》是一本全面介绍了C++语言的书籍,它不仅覆盖了语言...