C++98 比 C 多出来的东西(部分)
- 类相关: 类 、抽象类、封装、继承、多态、类的构造与析构、运算符重载、静态成员函数、const 成员函数
- 语法相关:友元、内联、 引用、模板、命名空间、缺省参数、初始化列表、函数重载
- 标准模板库(STL):六大组件分别有容器、算法、迭代器、空间配置器、仿函数、适配器
C++11 新特性(部分)
- 正则表达式
- 随机数生成函数库
- 原子操作
- 标准线程库
- 自动变量(auto)、新的for遍历
- 新的容器类
- 变参模板
C与c++对比
1、文件后缀不同
C 程序后缀为 * .c
C++为*.cpp
2、返回值不同
C 中如果函数没有返回值,默认返回整型,C++ 中必须指定为 void
3、参数列表
在C中如果函数无参数列表,则可传递多个参数过去,编译器都会 PUSH,在C++中则必须指定为 void
4、缺省参数
C 不支持缺省参数、C++支持缺省参数。缺省参数需要注意的几点:
- 带缺省值的参数必须位于最后
- 声明或定义中只能在一处出现
- 缺省值必须是常量或全局变量
- 缺省值通过传值或常量
5、函数重载:C不支持,C++支持
需要注意的地方:
- 同一作用域
- 函数名必须相同
- 参数必须不相同(类型、位置、数目)
- 仅返回值不同不构成重载
6、引用与指针
相同点:底层汇编相同
不同点:
- 引用定义必须初始化,指针不是必须
- 引用一旦定义就不能改变,指针可以
- 引用自增与指针自增不同
- 可以有多级指针,没有多级引用
- 没有NULL引用,有NULL指针
- sizeof 含义不同,引用时所引用对象的大小,指针是指针本身占用大小
7、 命名空间
- 防止命名冲突
- 相同命名空间可以分割出现在不同文件中
- 命名空间可以嵌套
8、输入输出
- cout/cin
- scanf/printf