zoukankan      html  css  js  c++  java
  • C++11 auto类型说明符

      编程时常常需要将表达式的值赋值给变量,这就要求在声明变量前知道表达式的类型,有时候很难预先知道,所以C++11新标准引入了auto类型说明符,其作用就是让编译器替我们去分析表达式的值类型,,auto让编译器通过初始值推算变量的类型,所以auto定义的变量必须有初始值。 

      如:  

    auto result=val1+val2;//result初始化为val1和val2相加的结果

    此处编译器会通过val1和val2相加的结果来推断result的类型,使用auto可以声明多个变量,但是要注意多个变量的类型要一致:

    auto a=1, *p=&i;//正确
    auto sz=0,pi=3.14;//错误:sz和pi的类型明显不符

    复合类型、常量和auto

      编译器推断出来的auto类型有时候和初始值的类型并不完全一样,编译器会适当的改变结果类型来符合初始规则,比如对引用使用auto,我们知道引用其实就是使用引用的对象,特别是当引用作为初始值时,正真参与初始化的起始是对象的值,所以会出现下面的情况:

    int a=0,&b=a;//b为a的引用
    auto c=b;//此时c为int类型

    另外,auto会忽略掉顶层const,而保留底层的const,如果希望auto推断出来的类型是一个顶层const,我们需要明确指出:

    const int ci=i,&ri=ci;
    auto b=ci;//b是一个普通的整数,顶层const被忽略 
    auto c=ri;//c也只是普通的整数,顶层const被忽略
    auto d=&i;//d为整型指针
    auto e=&ci;//e是一个指向整数常量的指针(对const对象取地址是底层const操作)
    const auto f=ci;//明确指出const

    对于引用的类型设为auto,原来的初始化规则依然适用:

    auto &g=ci;//g为整型常量的引用
    const auto &j=42;//j为整型常量的引用

    设置一个类型为auto引用时,初始值中的顶层const保留,因为使用了引用后顶层const 就变为底层const了!

  • 相关阅读:
    【微信公众号开发】【8】网页授权获取用户基本信息(OAuth 2.0)
    【微信公众号开发】【7】获取用户信息
    改革春风吹满地(多边形面积)
    You can Solve a Geometry Problem too(线段求交)
    Choose the best route(最短路)dijk
    A + B Problem II(大数加法)
    Graph(Floyd)
    Palindromes
    Wolf and Rabbit
    献给杭电五十周年校庆的礼物
  • 原文地址:https://www.cnblogs.com/chmm/p/7423535.html
Copyright © 2011-2022 走看看