码迷,mamicode.com
首页 > 其他好文 > 详细

auto用法

时间:2017-06-27 14:58:03      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:类型   roc   用法   amp   bsp   highlight   编译器   const   c++   

在C++11中,如果编译器在定义一个变量的时候可以推断出变量的类型,不用写变量的类型,你只需写auto即可。

第一种用法:自动推到内置类型

int x = 100;
//C++ 11
auto x = 100;

第二种用法:自动推导模版和迭代器类型

vector<int> vec;
auto iter = vec.iterator();

第三种用法:用于模版

template <typename BuiltType, typename Builder>
void makeAndProcessObject(cosnt Builder& builder)
{
    BuiltType val = builder.makeObject();  
    //do something 
}

上面的代码,我们看到这里需要两个模板参数:一个是Builder对象的类型,另一个是Builder创建出的对象的类型。糟糕的是创建出的类型无法被推导出,所以每次你必须这样调用:

MyObjBuilder builder;
makeAndProcessObject<MyObjBuilder>(builder);

使用C++ 11后的修改为:

template <typename Builder>
void makeAndProcessObject(const Builder& builder)
{
     auto val = bulder.makeObject();
     //...    
}

MyObjBuilder builder;
makeAndProcessObject(builder);

  

 

auto用法

标签:类型   roc   用法   amp   bsp   highlight   编译器   const   c++   

原文地址:http://www.cnblogs.com/ThatsMyTiger/p/7084710.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!