C++11之auto

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();
    // ...
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容