C++和C在非面向对象特性上的一些区别
1)C++是强类型语言,C++要求声明每个程序实体的类型,并在编译期间进行类型检查,因此比C更加安全。体现在:
- C++要求函数必须有原型声明,而在C中这不是必须的。编译器将会检查每个函数的参数类型和参数个数,并在函数调用时进行类型转换。
- 类型安全连接:C++会通过编译单元检测出不正确的函数调用,C++的函数标记是函数名和参数类型的顺序组合
- 类型安全I/O:C++iostream库会使用一个对象的类型决定正确的输出,而无需在编程时需先决定输入输出的类型。
2)灵活的局部变量定义:C++允许在任意位置进行局部变量的定义。这使得循环的使用更加灵活
for (int i=0;i<max;i++) {
}
3)I/O流控制:
cin和cout是C++预定义的标准输入输出设备,<< 和 >> 是重载运算符,用于向输出流中插入或向输入流中抽取数据。
C++输入输出流的控制:
4)C++动态内存分配使用new和delete函数代替了malloc和free
5)C++用单引号引用表示字符,用双引号的引用表示字符串。对于单个字符,与其对应的ASCII码完全等价。
字符数组的数组名表示数组的首地址,是指针但这个指针是指针常量而非指针变量,所以只能在定义时赋值,而不能在定义后再对其直接赋值,(可以用strcpy或者memcpy进行赋值)。而一个字符指针可以随意对其赋值。字符串以‘\0’结尾,系统会对用户定义的字符串后自动加上这个终止字符。
6)void指针:无类型指针。因为不知道地址所指向数据的数据类型,因此void指针不能够进行指针运算,也无法进行间接引用,只能单纯的存放一个地址。
7)引用与指针
8)const常量
9)define宏定义
带参数的宏定义:
带参数的宏定义与函数的区别:
宏定义与函数定义有本质的区别,宏定义的参数不分配内存,无类型,表达式不求值并且宏展开在预编译时进行,只占用编译时间,不占用程序运行时间。
预处理撤销:undef
9)条件编译
10)函数和结构体声明时可以加入缺省值
11)内联函数