1、原始字面量
string s = R"(eeeee)";
这样就不用考虑转义字符和连接符,语法是 R"xxx(原始字符串)xxx",xxx是描述符,括号前后的xxx必须是对应的,解析字符串是会忽略xxx
2、nullptr
NULL: 0
nullptr: 可以转换成各种类型的指针
void func(int p) { cout << "int " << endl; } void func(int *p) { cout << "int *" << endl; }
func(10); func(NULL); //调用的是参数为int 的函数 func(nullptr); //调用的是参数为int *的函数
3、constexpr 常量表达式 常量表达式函数: 为了提高C++程序执行效率,可以将程序中值不需要发生变化的变量定义为常量,也可以使用constexpr修饰函数的返回值,这种函数被称作常量表达式函数,这些函数主要包括以下几种:普通函数/类成员函数、类构造函数、模板函数。 整个函数体中不能出现非常量表达式之外的遇见(using typedef 断言 return语句除外) constexpr int fun() 声明和定义不能分开 { constexpr int a = 10; return a; } 在编译的过程中就能推导出结果,提高了效率 const int count = 24; 常量 void func(const int num) 4、auto auto 变量名 = 变量值; 根据变量值推导auto类型, 当变量不是指针或者引用类型时,推导的结果不会保留const volatile auto x = 3.14; // double int tmp = 10; auto *a = &tmp; // int auto b = &tmp; // int * zuto &c = tmp; //int
int tmp = 0;
const auto a = tmp; // const int auto = int
auto a1 = a;// int
不能使用auto的场景:
1、不能用作形参类型
2、类的非静态成员初始化
3、不能定义数组
auto使用场景:
stl容器遍历 auto it = map.begin();