auto类型说明符:当编程时不清楚此变量的类型时,就可以使用auto说明符让编译器去根据初始值来判断此变量的类型。

要点:

1.当使用了auto说明符时语句中所有变量的初始基本数据必须一样。

auto a=0,*p=0;
auto a=0,p=3.15 // err,a与p的类型不一样

2.当auto说明符,中用的是引用进行初始化时,实际上初始化的数据类型是引用的对象。

int i=10,&r=i;
auto a=r;  // auto a=i;

3.auto一般会忽略顶层const,同时底层const则会保留下来,特殊情况是:当auto修饰的变量的初始值是一个既有顶层也有底层的变量时,就不会进行忽略顶层const而保留底层const的操作。

int i=0;
const int ci=i,&cr=ci;
auto b=ci; // 这里b是一个整数,顶层const被忽略掉了
auto d=&i; // 这里d是一个指向int型的指针。
auto e=&ci; // 这里e是一个指向int型的常量指针,底层const被保留了下来int a=10;
const int *const i = &a;
auto k = &i; // 这里的k就是一个指向常量的常量指针,即const int *const k =&i;

解释:对常量对象取地址是一种底层const,为什么是一种底层const呢?因为:ci是一个int型常量,那么ci的值和地址就不能变,既然不能变,那么&ci也就不能变,即e所指的对象不能变,而要有这个特性,那么e的类型就只能是const int *const e,但是auto会忽略掉顶层的const,所以就只能是const int *e;,如果要要求变成即指向常量的常量指针,则只需要在auto前面加上const即可,如下。

        4.如果需要推断出的auto是一个顶层const,则需要明确指出:

const auto f=&ci; // 这样总的类型就会变成 const int *const f=&ci;
const auto f=ci; // 等价于 const int f=ci;

5.函数的参数不能是auto类型。

int A(auto i)  // err
{}

[C++]auto类型说明符相关推荐

  1. 关键字typedef、关键字using、auto类型说明符和declytpe类型指示符

    文章目录 类型别名 概念 关键字 typedef 别名声明 (alias declaration) using 指针.常量和类型别名 类型别名简化多维数组指针 auto类型说明符 概念 复合类型.常量 ...

  2. C++ const限定符和auto类型说明符

    const限定符 # 1.限定常量 有时我们希望定义这样的变量:它的值不能被改变.为了满足这一要求,我们使用const对变量的类型加以限定: const int bufSize = 512; 这样就把 ...

  3. C++11 auto类型说明符

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

  4. c++11 auto 类型说明符详解

    当使用 auto 自动推断类型时,需要注意以下几点: 一.必须要有初始值 一个显而易见的道理,auto 表示编译器根据初始值类型推断声明变量的类型,因此必须要有初始值. 二.一条声明语句只能有一种基本 ...

  5. C++ decltype类型说明符(尾置返回类型使用)

    转自https://blog.csdn.net/yhl_leo/article/details/50865552 1 基本语法 decltype 类型说明符生成指定表达式的类型.在此过程中,编译器分析 ...

  6. C++ decltype类型说明符

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50865552 1 基本语法 declt ...

  7. Effective Modern C++翻译(3)-条款2:明白auto类型推导

    条款2 明白auto类型推导 如果你已经读完了条款1中有关模板类型推导的内容,那么你几乎已经知道了所有关于auto类型推导的事情,因为除了一个古怪的例外,auto的类型推导规则和模板的类型推导规则是一 ...

  8. C++中的sta::atomic<bool>和auto类型

    文章目录 sta::atomic auto类型用法总结 sta::atomic 最基本的原子整数类型是std::atomic(可以使用预定义的别名std::atomic_bool),这是一个比std: ...

  9. 程序编译出错,缺少类型说明符;语法错误 : 缺少“;”(在标识符“PVOID64”的前面)

    1>正在编译...  1>stdafx.cpp  1>E:/VS2005/VC/PlatformSDK/include/winnt.h(222) : error C2146: 语法错 ...

最新文章

  1. RamDisk - 充分利用Vista的大内存
  2. 【学习笔记】ODATA
  3. javascript 之数据类型--01
  4. linux内核配置与编译,LINUX内核的配置与编译、安装
  5. 禁止服务器的协议,启用或禁用服务器网络协议
  6. linux 的ip 设置lo_Linux服务器设置静态IP的方法
  7. SLS机器学习介绍(02):时序聚类建模
  8. Select和epoll的区别
  9. linux中的轮询机制select/poll/epoll特点分析
  10. Linux下使用QQ
  11. ue4 4.27源码下载
  12. win10如何共享计算机网络打印机,win10如何共享打印机给其它电脑,Win10设置打印机共享操作步骤...
  13. PS的对图像一些简单处理
  14. 【JAVA学习路径 表述(超级详细的Java知识宇宙)】
  15. 小米,苹果,百度,三星等公司的智能语音识别功能如何测试?
  16. 20160620 盘后复盘
  17. 创建Deployment时指定hostnetwork是干啥的?
  18. Django的CBV和FBV
  19. autotools使用步骤(用autotools制作makefile)
  20. FFmpeg在iOS开发中编译并使用

热门文章

  1. hMailServer 使用教程 —— 手把手教你搭建自己的邮箱服务器
  2. linux apache 配置文件位置,Apache主配置文件httpd.conf 详解
  3. P14 JScrollPane 滚动面板
  4. 从Python爬虫到Spark预处理数据的真实需求[三]
  5. 前置条件,不变性条件,后置条件 --《java并发编程实战》
  6. 4.5 路径MTU发现
  7. 基于S32DS实现CAN、LIN基础结合芯片UJA1075的功耗模式切换设置(Standby、Normal、Sleep)
  8. 【2019正睿金华集训】0803总结
  9. 2021国潮新消费大会落幕,新国潮产业进入“黄金十年”
  10. 用Endnote在word中插入文献出现{Xu, 1997 #407}等样式的错误的解决方法如下