C++11之auto

作者: Hard模式 | 来源:发表于2018-06-13 16:28 被阅读0次
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();
    // ...
}

相关文章

  • c++ 11~20 新特性速查

    持续更新中。。。 c++11 std::auto (c++11) raw string (c++11) std::...

  • C++11的类型推导详解

    auto & decltype 关于C++11新特性,最先提到的肯定是类型推导,C++11引入了auto和decl...

  • C++11中auto和decltype

    C++11中auto和decltype auto和decltype都是C++11中引进来用于自动推断类型的关键字,...

  • C++11之auto

    此前,在C和C++中使用参数必须明确的指出其类型。比如: 在新标准中,通过关键字auto可以实现替代类型说明。比如...

  • C++11新特性/语法糖

    C++11的语法糖 https://imzlp.me/posts/2441/ auto https://blog....

  • 阿里巴巴面试题基础篇 C++11

    ● 请问C++11有哪些新特性? 参考回答: C++11 最常用的新特性如下: auto关键字:编译器可以根据初始...

  • 关键字auto的前世今生-未完

    一. auto的前世今生 《C++Primer Plus》中这样描述auto 在C语言和C++11版本之前的C++...

  • C++11:auto

    auto这个关键字在C++11之前就存在的,只不过当时它的含义是指明对象的存储期。这个用途在C++11中已经删除了...

  • c++11 auto

    auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型。 使用auto会拖慢c++效...

  • 2018-09-26

    命名空间 auto(since C++11) 引用c++==(附注:java里的变量都是reference)== ...

网友评论

    本文标题:C++11之auto

    本文链接:https://www.haomeiwen.com/subject/irgjeftx.html