美文网首页
C++11:auto

C++11:auto

作者: fck_13 | 来源:发表于2020-01-12 23:10 被阅读0次

    auto这个关键字在C++11之前就存在的,只不过当时它的含义是指明对象的存储期。这个用途在C++11中已经删除了,所以忽略这个就可以了。
    C++11更改了auto的用途,使其类似于C#中的var。这可以说是一个令人激动的改变。最大的好处就是我们在生命对象的时候可以不必明确的指定它的类型了。

    int i = 1;  //C++11 之前
    auto i = 1; //C++11
    
    std::chrono::time_point<std::chrono::high_resolution_clock> time_point = std::chrono::high_resolution_clock::now();  //C++11 之前
    auto time_point = std::chrono::high_resolution_clock::now();  //C++11
    //note:std::chrono 是在C++11才有的,这里也是为了说明 auto可以是声明表达式变得简单 
    

    从上面的例子来看,auto是我们少写很多代码。
    具体的讲一下auto的一些限制

    • 如果auto用于声明多个变量,推导出来的类型必须是匹配的。
    auto i = 0, d = 0.0; //ill formed, i 是 int, d是double,两者并不匹配
    auto i= 0, *p = &i; //auto被推导为 int
    
    • 不允许在同一个声明中既声明变量又声明函数
    auto f()->int , i=0;
    
    • 由于auto之前的用法,也就是在本文一开始的时候讲的,所以要注意auto在C和C++中的区别。
    auto int x;   //在C++98中是有效的,在C++11中是错误的
    auto x;        //在C语言中是有效的,在C++中是无效的
    

    相关文章

      网友评论

          本文标题:C++11:auto

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