1.constexpr
使修饰的函数在编译期执行
constexpr int numpow(int x,int y){
while (y--){
x*=x;
}
return x;
}
int a[numpow(2,4)];
数组的大小必须是常量,但我们用constpr修饰后,numpow(2,4)会在编译期就计算出来,数组分配空间时仍然是确定大小的。
2.auto
编译器根据等号右边的表达式结果/变量类型确定应该赋等号左边变量什么类型,特别适用于又臭又长的类型名,比如迭代器的那个
vector<int>nums;
vector<int>::iterator it = nums.begin();
auto its = nums.begin();
3.智能指针
new 和 delete 不用担心忘记释放
4.lambda表达式
5.nullptr
NULL 是一个宏定义,实际上是0,一个问腿是重载函数时对于char和int的都适用,不知道调用哪一个,另外问题是NULL可以直接转换成整型字符型,对一个地址来说不合理
6.委托构造函数
7.enum枚举
8.结构体初始化可以直接初始化
9.容器的初始化,直接可以用类似数组的{}来初始化
10.