C 与 C++ 的差异
C++ 是 C 的超集和增强,校验更加严格 C 主要是面向过程,C++ 是面向对象,面向过程是函数驱动,面向对象是对象驱动 1 新增命名空间 给{}作用域起了个名称,后面不用加分号; 命名空间可以嵌套 namespace X { namespace Y { } } 2 新增引用类型 引用在一定程度上可以替代指针,作用与常指针类似 int * const a 引用没有定义,是一种关系声明,声明它和原有某一变量(实体)的关系, 故而类型与原类型保持一致,且不分配内存,与被引用的变量有相同的地址 声明时必须初始化,一经声明,不可变更 可对引用再次引用,多次引用的结果是某一变量具有多个别名 & 符号在 = 号左边是引用,在 = 号右边为取地址 3 枚举检测增强 不能将整型隐式转化为枚举 4 变量定义增强 C++ 变量不必都声明在函数顶部,可以随使用随定义 5 全局变量定义检测严格 C 全局变量重复定义,C++ 不可以,全局变量检测增强 // C 语言 int g_val; // bss段 int g_val = 10; // data段 6 函数形参个数和函数返回值检测增强 // C 语言 f() // 默认返回值 int { return 10; } int g(int a) { return 10; } // 调用 g(10, 20, 30, 40); // 可编译通过,但是有警告 7 struct 结构体增强 功能与类基本等同,只不过 class 默认是 private 权限,struct 默认是 public 权限 // C 语言声明结构体变量 struct Student s; // C++ 语言声明结构体变量 Student s; 8 新增 bool 关键字,1 个字节 C 用 0 表示 false,非 0 表示 true C++ 中 bool 为 1 个字节,但是只有 true 和 false 两个值 9 三目运算符增强(语法糖) C 中三目运算符不可以当左值 // C 语言 int a = 10, b = 20; ((a < b) ?...