constexpr,用在编译时的常量和常量函数,相对于const表示只读语义保证了运行时不被修改,但它修饰的依然是动态的变量,constexper对应修饰的则是真正的常量,是在编译时就计算确认了的值,另外它用来修饰函数,就会使得该函数的返回值在编译期间尽量被计算出来当做真正的常量,如果不能,就当做正经函数; nullptr,表示空指针
constexpr,用在编译时的常量和常量函数,相对于const表示只读语义保证了运行时不被修改,但它修饰的依然是动态的变量,constexper对应修饰的则是真正的常量,是在编译时就计算确认了的值,另外它用来修饰函数,就会使得该函数的返回值在编译期间尽量被计算出来当做真正的常量,如果不能,就当做正经函数; nullptr,表示空指针的...
voidNonOwnnerUse(A& a){ Use(a); } // a既可以被sp管理,也可以栈上创建,同时可以多态 使用std::shared_ptr是表示共享所有权的标准方式。其含义是,最后一个拥有者负责删除对象。 个人理解: 创建对象时,一般可以make_shared,make_unique, 或者栈上创建。 使用Foo(const unique_ptr<A>& up) 很多情况下是...
C++11中constexpr函数可以使用递归,在C++14中可以使用局部变量和循环: constexprintfactorial(intn){// C++14 和 C++11均可returnn <=1?1: (n * factorial(n -1)); } 在C++14中可以这样做: constexprintfactorial(intn){// C++11中不可,C++14中可以intret =0;for(inti =0; i < n; ++i) { ...
Virtual functions can now be constexpr and evaluated at compile-time. constexpr virtual functions can override non-constexpr virtual functions and vice-versa. struct X1 { virtual int f() const = 0; }; struct X2: public X1 { constexpr virtual int f() const { return 2; } }; struct ...
//模板形式template<typenameT>voidf(ParamType x);//调用f(expr)//编译期间编译器用expr推断T和Paramtervoidf(constT& x);intx;f(x);//T被推断成int,ParamType推断成const int& 所以T的类型推断是与expr和ParamType有关 以下情况不适用 ParamType 不是引用或指针 ...
constexpr virtual function (FTM)* P1064R0 9 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0 Consistency improvements for comparisons P1120R0 10 8 (partial)10 19.22* 12.0.0* 5.1 2023.1 20.7 12.0 11.0 char8_t (FTM)* P0482R6 9 7* 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0 ...
constexpr int m4 = min(-1, v); // 错误: 无法在编译期求值 } 1. 2. 3. 4. 5. 6. 7. 8. 9. F.5: 如果函数非常小,并且是时间敏感的,就将其声明为 inline F.6: 如果函数必然不会抛出异常,就将其声明为 noexcept 如果不打算抛出异常的话,程序就会认为无法处理这种错误,并且应当尽早终止。把...
constexpr virtual function (FTM)* P1064R0 9 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0 Consistency improvements for comparisons P1120R0 10 8 (partial)10 19.22* 12.0.0* 5.1 2023.1 20.7 12.0 11.0 char8_t (FTM)* P0482R6 9 7* 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0 ...
4.c++11的新特性使用using来定义别名,而非typedef;constexpr,用在编译时的常量和常量函数,相对于const表示只读语义保证了运行时不被修改,但它修饰的依然是动态的变量,constexper对应修饰的则是真正的常量,是在编译时就计算确认了的值,另外它用来修饰函数,就会使得该函数的返回值在编译期间尽量被计算出来当做真正的...