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了!

  • 相关阅读:
    web框架本质及第一个Django实例
    jQuery练习题HTML文件
    jQuery快速入门
    前端之JS
    前端基础之HTML
    前端基础之css
    并发编程之 协程
    Linux目录结构详解
    第三周 time库
    网络打印机拒绝访问,无法连接处理方法汇总
  • 原文地址:https://www.cnblogs.com/chmm/p/7423535.html
Copyright © 2011-2022 走看看