🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## nullptr `nullptr`出现的目的是为了替代`NULL`。在某种意义上来说,传统 C++ 会把`NULL`、`0`视为同一种东西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为`((void*)0)`,有些则会直接将其定义为`0`。 ``` void foo(char*); void foo(int); ``` `foo(NULL);`这个语句将会去调用`foo(int)`,从而导致代码违反直觉 ## constexpr - C++ 本身已经具备了常量表达式的概念,比如`1+2`,`3*4`这种表达式总是会产生相同的结果并且没有任何副作用。如果编译器能够在编译时就把这些表达式直接优化并植入到程序运行时,将能增加程序的性能 - 也可对递归生效 ``` constexpr int len_foo_constexpr() { return 5; } constexpr int fibonacci(const int n) { return n == 1 || n == 2 ? 1 : fibonacci(n-1)+fibonacci(n-2); } ```