C++ 可以创建任何类型的程序:游戏、设备驱动程序、云、桌面、HPC、嵌入式和移动应用等,乃至用于其他编程语言的库和编译器也使用 C++ 编写。
C++ 的原始要求之一是与 C 语言向后兼容。 因此,C++ 始终允许 C 样式编程,其中包罗原始指针、数组、以 null 末了的字符串和其他功能。它们可以实现良好的性能,但也可能会引发 bug 并增加复杂性。C++ 的演变注意可显著降低 C 样式惯例使用需求的功能。 如果需要,你仍可以使用旧的 C 编程设施。
在新式 C++ 代码中,对上述设施的需求会越来越少。 现代 C++ 代码更加简朴、安全、美观,而且速度仍像以往一样快速。
资源和智能指针
C 样式编程的一个主要 bug 类型是内存泄漏。 泄漏通常是由未能为使用 new 分配的内存调用 delete 导致的。
现代 C++ 夸大“资源获取即初始化”(RAII) 原则。 其理念很简朴。 资源(堆内存、文件句柄、套接字等)应由对象“拥有”。 该对象在其构造函数中创建或吸收新分配的资源,并在其析构函数中将此资源删除。 RAII 原则可确保当所属对象超出范围时,所有资源都能正确返回到操作系统。