C++11从入门到入门

C++11之auto

2018-06-13  本文已影响0人  Hard模式
cpp11_auto.png

此前,在C和C++中使用参数必须明确的指出其类型。比如:

int i = 5;
char c = "a";
double d = 0.5;

在新标准中,通过关键字auto可以实现替代类型说明。比如:

auto a = 5; // a为int类型
auto a = "a"; // a为char类型
auto a = 0.5; // a为double类型

这样的代码是不是有点“无类型”的感觉?但实际上,编译器根据初始化代码,自动完成了变量的真实类型推导。
auto的引入使得程序更为简洁,而且由于类型推导是在编译阶段进行的,程序的实际运行效率不受影响。

再来看一个更明显的例子:

vector<int> iv;
auto itr = iv.begin();

对比一下之前的写法:

vector<int> iv;
vector<int>::const_iterator itr = iv.begin();

另一个更有用的场景
对于模板编程的中间变量,auto的引入也可简化编程的工作,使代码更清晰。

template <typename T1, typename T2>
void foo(const T1& t) 
{
    T2* tmp = t.init();
    // ...
}

使用auto后,

template <typename T1>
void foo(const T1& t)
{
    auto tmp = t.init();
    // ...
}
上一篇下一篇

猜你喜欢

热点阅读