本文已参与「新人创作礼」活动,一起开启掘金创作之路。
与c的不同
* 必须使用函数原型进行声明,并根据原型进行传递,不再隐式转换
* 允许一个常量整数来定义数组的大小。这在c中是错误的
const int size=128;char a[size];
* test();c中允许sizeof(test),但在c++中是错误的
* 编程语言有一个特性,称为正交性(orthogonality)。它是指不同的特性遵循同一个基本原则的程度(也就是学会一种特性有助于学习其他的特性)。令人不快的是,c++中的许多特性是非正交性的。
* 在c++中不允许用户代码调用main()函数,但c中是允许的(这种情况极为罕见)
* 完整的函数原型声明在c++中是必须的,但在c中没有那么严格
* 在c++中由typedef定义的名字不能与已有的结构标签冲突,但c中却允许(它们分属不同的名字空间)
* 当void*指针赋值给另一个类型的指针时,c++规定必须进行强制类型转换,但c中却无必要
在c++和c语言中具有不同含义的特性有下面这些:
* 在c++中至少增加了十几个关键字。这些关键字在C语言中可以作为标识符使用,但如果这样做了,用c++编译器编译这些代码时就会产生错误信息
* 在c++中,声明可以出现在语句可以出现的任何地方。在c语言的代码块中,所有的声明必须出现在所有语句的前面
* 在c++中,一个内层作用域的结构名将会隐藏外层空间中相同的对象名。在c中则非如此
* 在c++中,字符常量的类型是char,但在c中,它们的类型是int。也就是说,c++中sizeof('a')的结果是1,而c中它的值要大一些
* 由于c++增加了新的//注释符,因此有时会在两种语言中产生微妙而怪异的差别