char *
。如果需要用字符串字面值常量赋值和初始化一个 char *
,应该使用 const char *
或者 auto
。unexpected_handler
、set_unexpected()
等相关特性被弃用,应该使用 noexcept
。auto_ptr
被弃用,应使用 unique_ptr
。register
关键字被弃用,可以使用但不再具备任何实际含义。(convert_type)
),应该使用 static_cast
、reinterpret_cast
、const_cast
来进行类型转换。<ccomplex>
、<cstdalign>
、<cstdbool>
与 <ctgmath>
等在编写 C++ 时,也应该尽可能的避免使用诸如 void*
之类的程序风格。而在不得不使用 C 时(链接到C库/C目标文件),应该注意使用 extern "C"
这种特性,将 C 语言的代码与 C++代码进行分离编译,再统一链接。
nullptr:替代 NULL
。传统 C++ 会把 NULL
、0
视为同一种东西,这取决于编译器如何定义 NULL
,有些编译器会将 NULL
定义为 ((void*)0)
,有些则会直接将其定义为 0
。
nullptr
的类型为 nullptr_t
,能够隐式的转换为任何指针或成员指针的类型,也能和他们进行相等或者不等的比较。
constexpr:C++11 提供了 constexpr
让用户显式的声明函数或对象构造函数在编译期会成为常量表达式。从 C++14 开始,constexpr
函数可以在内部使用局部变量、循环和分支等简单语句。