学了这么多年C++今天拜读scott meyes的more effective cpp第一次看到这种写法... 引用限定可以让成员函数只能被左值对象调用或者只能被右值对象调用: #include <iostream> struct Test { void workLvalue() & { std::cout << " work only if object was a lvalue\n"; } void workRvalue() && {…
有些被称为存储说明符(storage class specifier)或cv-限定符(cv-qualifier)的C++关键字提供了一些有关存储的信息.下面是存储所说明符:* auto (在C++11中不再是说明符);* register;* static;* extern;* thread_local(C++11新增的);* mutable.在同一个声明中不能使用多个说明符,但thread_local除外,它可与static或extern结合使用.在C++11之前,可以在声明中使用关键字aut…
最近在重新看<<C++ Primer>>,第一遍的时候const和constexpr看得并不太懂,这次又有了些更新的理解,当然可能仍然有许多不对的地方... 首先,const限定符即“常量”,一旦使用了const,那么对象的值不能再改变,比如: const int i=1; 同时,const修饰的变量必须初始化,因为如果不初始化,那么就永远无法初始化了. 常量的初始化并不一定需要用常量,字面值或者是普通对象都是可以的,例如: int i=5; const int j=i; cons…
const限定符 const是一种限定符,被const所限定的变量其值不可以被改变. const的初始化 由于const一旦创建其值就不能够被改变,所以我们必须对其进行初始化 const int a;//错误,const变量必须进行初始化! const int b=10;//正确,编译时初始化 const int c=get_size();//正确,运行时初始化 相同类型的变量相互初始化时,不论变量是否被const限定我们都可以进行随意的相互拷贝.因为在拷贝过程中我们只会用到等式右边变量的右值属…