C++11之auto

C++11之auto_第1张图片
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 iv;
auto itr = iv.begin();

对比一下之前的写法:

vector iv;
vector::const_iterator itr = iv.begin();

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

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

使用auto后,

template 
void foo(const T1& t)
{
    auto tmp = t.init();
    // ...
}

你可能感兴趣的:(C++11之auto)