1 迈向现代 C++

1.1 弃用特性

1.2 兼容C

在编写 C++ 时,也应该尽可能的避免使用诸如 void* 之类的程序风格。而在不得不使用 C 时(链接到C库/C目标文件),应该注意使用 extern "C" 这种特性,将 C 语言的代码与 C++代码进行分离编译,再统一链接。

2 语言强化

2.1 常量

nullptr:替代 NULL。传统 C++ 会把 NULL0视为同一种东西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为 ((void*)0),有些则会直接将其定义为 0

nullptr 的类型为 nullptr_t,能够隐式的转换为任何指针或成员指针的类型,也能和他们进行相等或者不等的比较。

constexpr:C++11 提供了 constexpr 让用户显式的声明函数或对象构造函数在编译期会成为常量表达式。从 C++14 开始,constexpr 函数可以在内部使用局部变量、循环和分支等简单语句。