C++ 在 C 语言的基础上增加了很多面向对象编程的特性,以及其他一些改进。以下是一些 C++ 特有而 C 语言没有的特性:
- 类(Class):C++ 引入了类的概念,允许将数据和操作数据的方法封装在一起,形成对象。
- 继承(Inheritance):C++ 支持继承,允许创建新的类(派生类)来继承一个或多个现有类(基类)的属性和方法。
- 多态(Polymorphism):通过虚函数和继承,C++ 支持多态,允许使用一个接口来表示不同的数据类型。
- 封装(Encapsulation):C++ 通过访问修饰符(public, private, protected)提供了更好的封装性,控制对类成员的访问。
- 模板(Templates):C++ 的模板允许编写与类型无关的代码,这是泛型编程的基础。模板可以用于函数和类。
- 异常处理(Exception Handling):C++ 提供了异常处理机制,允许在检测到错误时抛出异常,并在程序的另一部分捕获和处理这些异常。
- 运算符重载(Operator Overloading):C++ 允许为类定义新的运算符行为,这意味着可以重载标准的运算符,如加法、减法等。
- 引用(References):C++ 引入了引用的概念,它是一个变量的别名,必须在初始化时指定,之后不能更改。
- 命名空间(Namespaces):C++ 引入了命名空间的概念,以避免全局命名冲突,并帮助组织代码。
- 构造函数和析构函数(Constructors and Destructors):C++ 中的类有构造函数和析构函数,它们在创建和销毁对象时自动调用。
- 内联函数(Inline Functions):C++ 允许将函数定义为内联的,这意味着编译器会在调用点展开函数体,而不是通过函数调用。
- 虚函数(Virtual Functions):C++ 允许声明虚函数,这允许在运行时动态绑定函数调用,是实现多态的关键。
- 函数重载(Function Overloading):C++ 允许定义多个同名函数,只要它们的参数列表不同,编译器会根据参数类型和数量来确定调用哪个函数。
- new 和 delete 运算符:C++ 使用 new 和 delete 运算符来动态分配和释放内存,这与 C 语言的 malloc 和 free 函数不同。
- 强类型检查:C++ 对类型检查更为严格,例如,C++ 不允许将 void* 指针直接赋值给其他类型的指针,而在 C 语言中这是允许的。
- 默认参数:C++ 允许函数定义时指定默认参数值,这样在调用函数时可以省略这些参数。
- const 和 volatile 关键字:C++ 使用 const 来声明不允许修改的对象,使用 volatile 来声明可能会被外部因素(如硬件)改变的对象。
这些特性使得 C++ 成为一个功能更强大、更易于维护和扩展的编程语言。