C++兼容C的大部分
C++是面向对象的语言,而C是结构化的语言
C中的变量的定义要在一个函数的最前面,C++只要定义在使用该变量之前就可以了
C和C++中都有结构体的概念,C++中还有类
C定义结构体和定义结构体变量的时候要加struct(union,enum类同)关键字;C++中不必加
======
顺便区分一下 C++中的 struct 和 class :
struct 和 class 在大多数情况下等同,但是struct 的成员默认情况下
是public的,class 的成员默认情况下是private的;class可以用于定义
模板参数,但struct不能用于定义模板参数;C++中的struct是对C中的
struct 的全面兼容,可以在定义时直接指定初始值,而class不能。
class的默认继承属性为private,struct的默认继承属性为public。
=======
C++比C多了空类型(void),布尔型(bool)两种数据类型;
强制类型转换C++不仅可以像C一样:(TYPE)var,还可以TYPE(var);
C++的基本输入输出增加了cin>> , cout<<;
C++增加的还有:内置函数,函数重载,函数模板,有默认参数的函数,
字符串类与字符串变量,异常,命名空间和异常处理。
=======
关于动态申请和释放内存:
C++中不仅兼容C中的有关动态申请和释放内存的函数malloc()/free(),还
增加了两个动态分配和撤销内存的运算符(注意:由于是运算符,效率有
所提升;并且可以动态产生对象,因为这两个运算符还调用类的的构造方
法和析构方法)
---------------------------------
以下是网上收集的,本人还未搞懂。。。
RTTI
C中的关键字const,与C++中的const意义相同吗?
C++的变量作用域规则,可以拿在C里用吗?
C中自由放任的类型转换,在C++里可以被编译器宽松地pass吗?
在C和C++中,sizeof('a')的结果会相同吗?
C中的的数组限定词,比如如下句法,在C++编译器中上可以pass?
void foo(char s[static 10]);
void foo(int str[const]);
C++有restrict关键字吗?
C中的逗号操作符","和C++的用法一样吗?
C中的void foo()和C++中的意义一样吗?
C++支持C的VLA吗? 那也就不提动态sizeof了...
.
.
.