C++ Annotation 01 From C to C++,讲讲C和C++的某些小差别
添加时间:2013-5-20 点击量:
c和c++的某些小差别
C++类型搜检加倍严格
c说话中,当字符当做函数参数传入是,都把字符当整型int应用,sizeof(c) = sizeof(int); 更进一步,c编译器把字符常量等同于整数常量处理惩罚: putchar(10) 同 putchar(\n) 等效。
然则,C++中, sizeof(c) == 1, 补充申明一点, sizeof(wchar_t) ==4。 是以可以很轻易代表65,536个不合的Unicode字符。 别的,C++中,差别函数不仅要看他的函数名,更要看它的参数。是以,putchar(10)调用的是putchar(int)版本,putchar(\n)调用的是putchar(char)版本。
C++的函数原型搜检加倍严格。如c中的函数定义: void func();默示函数func()存在,无返回值。该声明不指定具体有几许个情势参数。然则在C++中,默示其不得有情势参数传入!
main函数
C++中, main函数首要有两种写法: int main() 和 int main(int argc, char argv);
main函数中的返回类型为 int, 不是void
若无显示写 return语句,默认返回0;
若写了return语句,必须跟上某个整型值,如 return 1; 只写 return; 是严重错误的。
类型搜检
函数调用时,原型必须严格匹配。C说话中默认包含stdio.h,然则C++不默认包含,是以必须包含 cstdio 头文件。
函数相干的不合
函数重载
C++支撑函数重载。函数重载必须满足
a. 函数名雷同
b. 形参表不合
c. 形参的属性不合 便是否 const
在编译时,其实对重载函数,内部采取别的个名字表达,专业术语是name mangling, 如 void show(int) -->
VshowI, void show(char)-->VshowCP, 如许的名字。
形参默认值
默认形参必须呈如今函数定义中,而不是在函数实现中。
代码加倍优雅
单行注释, C++中多了单行注释 //
C++11 中的 NULL-pointers vs. 0-pointers and nullptr
C++中所有的零值都是0. 在C中,NULL在指针高低文中默示0,在C++中,应当避免应用NULL,固然它的宏定义就是0.
C++11引入了新的关键字nullptr默示零值指针,它只能赋给指针类型
C++中可以应用C运行库中的函数,然则须要加上 extern C 这个前缀
在C说话中,局部变量必须在函数或语句块的肇端处定义!而C++可以在随便率性处所定义局部变量。
C++中,布局体在定义变量时可以省略struct关键字
C++中,布局体中可以包含函数,即默认属性是public的类
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
c和c++的某些小差别
C++类型搜检加倍严格
c说话中,当字符当做函数参数传入是,都把字符当整型int应用,sizeof(c) = sizeof(int); 更进一步,c编译器把字符常量等同于整数常量处理惩罚: putchar(10) 同 putchar(\n) 等效。
然则,C++中, sizeof(c) == 1, 补充申明一点, sizeof(wchar_t) ==4。 是以可以很轻易代表65,536个不合的Unicode字符。 别的,C++中,差别函数不仅要看他的函数名,更要看它的参数。是以,putchar(10)调用的是putchar(int)版本,putchar(\n)调用的是putchar(char)版本。
C++的函数原型搜检加倍严格。如c中的函数定义: void func();默示函数func()存在,无返回值。该声明不指定具体有几许个情势参数。然则在C++中,默示其不得有情势参数传入!
main函数
C++中, main函数首要有两种写法: int main() 和 int main(int argc, char argv);
main函数中的返回类型为 int, 不是void
若无显示写 return语句,默认返回0;
若写了return语句,必须跟上某个整型值,如 return 1; 只写 return; 是严重错误的。
类型搜检
函数调用时,原型必须严格匹配。C说话中默认包含stdio.h,然则C++不默认包含,是以必须包含 cstdio 头文件。
函数相干的不合
函数重载
C++支撑函数重载。函数重载必须满足
a. 函数名雷同
b. 形参表不合
c. 形参的属性不合 便是否 const
在编译时,其实对重载函数,内部采取别的个名字表达,专业术语是name mangling, 如 void show(int) -->
VshowI, void show(char)-->VshowCP, 如许的名字。
VshowI, void show(char)-->VshowCP, 如许的名字。
形参默认值
默认形参必须呈如今函数定义中,而不是在函数实现中。
代码加倍优雅
单行注释, C++中多了单行注释 //
C++11 中的 NULL-pointers vs. 0-pointers and nullptr
C++中所有的零值都是0. 在C中,NULL在指针高低文中默示0,在C++中,应当避免应用NULL,固然它的宏定义就是0.
C++11引入了新的关键字nullptr默示零值指针,它只能赋给指针类型
C++中可以应用C运行库中的函数,然则须要加上 extern C 这个前缀
在C说话中,局部变量必须在函数或语句块的肇端处定义!而C++可以在随便率性处所定义局部变量。
C++中,布局体在定义变量时可以省略struct关键字
C++中,布局体中可以包含函数,即默认属性是public的类
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》