C++11:auto

2020-01-12  本文已影响0人  fck_13

auto这个关键字在C++11之前就存在的,只不过当时它的含义是指明对象的存储期。这个用途在C++11中已经删除了,所以忽略这个就可以了。
C++11更改了auto的用途,使其类似于C#中的var。这可以说是一个令人激动的改变。最大的好处就是我们在生命对象的时候可以不必明确的指定它的类型了。

int i = 1;  //C++11 之前
auto i = 1; //C++11

std::chrono::time_point<std::chrono::high_resolution_clock> time_point = std::chrono::high_resolution_clock::now();  //C++11 之前
auto time_point = std::chrono::high_resolution_clock::now();  //C++11
//note:std::chrono 是在C++11才有的,这里也是为了说明 auto可以是声明表达式变得简单 

从上面的例子来看,auto是我们少写很多代码。
具体的讲一下auto的一些限制

auto i = 0, d = 0.0; //ill formed, i 是 int, d是double,两者并不匹配
auto i= 0, *p = &i; //auto被推导为 int
auto f()->int , i=0;
auto int x;   //在C++98中是有效的,在C++11中是错误的
auto x;        //在C语言中是有效的,在C++中是无效的
上一篇下一篇

猜你喜欢

热点阅读