1、int func()
C :不确定参数数目,func(void)才表示空参数列表。
C++:0个参数。
2、func(int a)
C :返回类型默认为int型。
C++:函数必须有返回值类型。
3、bool类型
C:支持C99标准的编译器才支持bool类型,老编译器不支持bool类型。
C++:支持。
4、定义变量的位置
C:强制在作用域的开始处就定义所有的变量,以便编译器创建一个块时,能给所有这些变量分配空间。
C++:允许在作用域的任意位置定义变量(只要在使用之前定义就好),减少了在一个作用域内不停地来回跳转造成的问题。
5、类型转换
C:类型转换出现故障,很难确定C风格转换的位置。
C++:用显式转换语法,能更容易发现它们,因为通过名字就能找到。(如果不破坏代码,是不会认为C风格转换不合法,只是不容易找到相应的位置,为排除故障增加难度)
6、指针转换
C:C不允许随便将一个类型的指针复制给另一个类型,但允许通过void*来实现,C语言允许下面的实现方式。
bird* b;
dog* c;
void* e;
e = b;
c = e;
C++:C++不允许这样做,编译器会给出一个错误信息,如果想将某种类型当做别的类型处理,须显式地使用类型转换,通知编译器和读者。