01. 列表初始化,auto,decltype,nullptr,范围for
C++官网:https://isocpp.org/
C++参考:https://zh.cppreference.com
1.列表初始化:用花括号初始化变量
特点:作用于内置类型的变量时,如果有丢失信息的风险,编译报错
int n1 = 10; //通常写法 int n2 = { 10 };//列表初始化 int n3{ 10 }; //列表初始化 int n4{ 10.1 }; //精度丢失,编译报错
2.auto 类型说明符:让编译器通过初始值推断变量的类型,显然,auto定义的变量必须有初始值
auto a = 1;//int auto b = 1.2;//double auto c = "hello";//const char *
3.decltype类型指示符:从表达式的类型推断出要定义变量的类型
decltype(a) a2;//int decltype(b) b2;//double decltype(c) c2;//const char *
4.nullptr 空指针:NULL在C里是 #define NULL ((void *)0),C中指针不用强制转换即可赋值给其他指针。C++里任意指针类型可以隐式转换为void *,其他要检查类型是否匹配,所以宏定义为
#define NULL 0,否则就不能给任意类型的指针赋值为NULL 了。因此,C++可以写如下代码:
int *p = NULL; int n = NULL; double d = NULL; float f = NULL; char ch = NULL;
所以有了专门的nullptr ,C++中要避免使用NULL
int *q = nullptr;
5.范围for语句range for statement:
for (auto &i : v) { }