C++11auto类型说明符
来源:互联网 发布:西门子冰箱知乎 编辑:程序博客网 时间:2024/05/17 18:23
C++11新标准引入了auto类型说明符,让编译器通过初始值推算变量的类型,所以,auto定义的变量必须有初始值。如:
auto item = val1 + val2; //item初始化为val1和val2相加的结果
使用auto也可以在一条语句中声明多个变量,但是该语句中所有初始值的基本数据类型必须一样,因为一条语句中只能有一个基本数据类型。
auto i = 0, *p = &i; //正确,i是整数,p是整型指针auto sz = 0, pi = 3.14; //错误,类型不一致
复合类型与auto
编译器会适当的改变结果类型使其更符合初始化规则。
引用与auto
使用引用其实是使用引用的对象,特别是被用作初始值时,真正参与初始化的是引用对象的值,编译器以引用对象的类型作为auto的类型:
int i = 0. &r = i;auto a = r; //a是一个整数
const与auto
auto一般会忽略顶层const,而底层const会保留下来。当初始值时一个指向常量的指针时:
int i = 0;const int ci = i, &cr = ci;auto b = ci; //b是一个整数(ci的顶层const被忽略)auto c = cr; //c是一个整数(cr是ci的引用,使用ci作为初始化的值,ci本身是顶层const)auto d = &i; //d是一个整型指针,非常量整数i的地址auto e = &ci; //e是一个指向整数常量的指针,整数常量只能复制给指向整数常量的指针(底层const)
如果希望推断出的auto类型是顶层const,则必须在其前面加const:
const auto f = ci; //ci推断出的类型是int(忽略顶层const),f是const int
设置一个类型为auto的引用时,初始值中的顶层常量属性仍然保留:
auto &g = ci; //g是整型常量引用auto &h = 42; //错误,不能将非常量引用绑定到字面值const auto &j = 42; //正确,j为常量引用
目的均为使auto声明的变量可以被赋予等号右侧的初始值。
*和&均是从属于某个声明符,而非基本数据类型的一部分,初始值必须是同一类型:
auto k = ci, &l = i; //k为int,l为整型引用,因为ci的顶层const被忽略auto &m = ci, *p = &ci; //m为整型常量引用,p是指向整型常量的指针auto &n = i, *p2 = &ci; //错误,n为非常量整型的引用,为int,p2为指向整型常量的指针,为const int
阅读全文
0 0
- [C++] auto类型说明符
- C++11--auto类型说明符
- C++11auto类型说明符
- c++primer之auto类型说明符
- auto类型说明符
- auto类型说明符
- auto类型说明符
- C++ auto类型说明符
- auto类型说明符
- auto类型说明符
- c++ auto类型说明符
- c++(14)处理类型--auto类型说明符
- C++11:"auto"和"decltype"类型说明符的思考
- C++11中的左引用和auto类型说明符
- C++11 auto类型说明符如for(atuo &x : s)
- 类型别名+auto类型说明符+decltype类型说明符
- 类型别名、auto类型说明符和decltype类型说明符初探
- 类型别名定义及auto类型说明符
- 最简洁高效的Git 命令上传代码【以及Git的一些经常使用的小命令】
- Linux下socket编程之线程池的实现
- jQuery的extend的用法
- 数据结构之链表的实例
- Luncene学习笔记 -- day04 分词器
- C++11auto类型说明符
- Java连接hive报错01
- C语言——完数
- Springmvc的入门---配置
- python数据持久化到文件并读取:pickle的使用
- struts报错严重: Dispatcher initialization failed Unable to load configuration.
- 文本特征选择-互信息
- 数据结构之链表的实例
- log4j在spring4中的配置