1. 顶层const表示指针本身是个常量,而底层const表示指针所指向的对象是一个常量,顶层const可以适用于任何数据类型,而底层const只能用于指针和引用等符合类型;
2. 声明constexpr类型时由编译器来验证变量是否是一个常量表达式,constexpr定义了一个常量,只能由字面值类型来初始化;
constexpr in mf = 20; // 20是常量表达式 constexpr int limit = mf; // mf是常量表达式 constexpr int sz = size(); // 只有当size是个constexpr函数时正确
3. auto类型说明符,auto声明多个变量时,只能表示一个基本数据类型,且auto会忽略掉顶层const;
// val1和val2相加的结果可以推出item的类型 auto item = val1 + val2;
4. decltype选择并返回操作数的基本数据类型;
// sum的类型就是函数f的返回类型 decltype(f()) sum = x;
5. 列表初始化:
vector<int> ivec {1, 2, 3, 4}; vector<int> ivec = {1, 2, 3, 4};
6. begin()和end函数:
// ia是一个含有10个整数的数组 int ia[] = {0, 1, 2, 3, 4, 5, 6}; // 指向ia首元素的指针 int *beg = begin(ia); // 指向array尾元素的下一个元素的指针 int *last = end(ia);