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) {
}

  

 

posted @ 2020-05-06 06:51  八转达人  阅读(165)  评论(0编辑  收藏  举报