|
Posted on
2023-03-12 22:18
乔55
阅读( 16)
评论()
编辑
收藏
举报
C++比C有所增加
- register增强
- C
- 请求编译器将局部变量存储于寄存器中,寄存器中变量操作速度更快
- 但C无法取得register变量地址
- C可通过register关键字人为地优化代码,提高效率
- C++
- 仍然支持register,且可取register变量地址
- C++编译器有自己的优化方式,不必人为地使用register去优化代码,因此C++中register变得无缘鸡肋
- 当C++中取得register变量地址时,编译器就认为无法将此变量存放到寄存器中
- 同名变量增强
- C中定义多个同名的全局变量是合法的,C++是非法的
- C中定义的多个同名全局变量,最终会被链接到全局数据区的同一地址空间,C++拒绝这种二义性
- 类型的增强
- C中struct被认为是定义了一个变量的集合
- C中枚举只能用枚举出来的元素初始化
- 新增了bool类型
- 对三目运算符增强
- C++中三目运算符的结果可做左值,C的却不可以
- 当且仅当3目运算符中的3个参数都是变量时才可做左值
- 对const增强
- C:
- const变量只是只读变量,不是真正的常量,仍可通过指针修改其值
- const变量有自己的内存空间
- C++
- const变量是真正的常量
- 当const常量为全局时,且需要在其他文件中使用时,它有自己的内存空间
- 当使用取址操作符对const常量取地址时,它有自己的内存空间
|