自动获取类型的auto和decltype类型说明符
2017-03-12 17:26
162 查看
auto: 让编译器通过初始值来推算变量的类型,要求auto定义的变量必须有初始值。
使用auto可以在一条语句中声明多个变量,但必须是同一数据类型的
auto i = 0, *p = &i ; // i是整数、p是整型指针
auto m = 0, n = 3.14 ; // 不能这样定义,m和n数据类型不一致
int i = 0 ;
const int ci = i ;
auto &n = i, *p = &ci ; // 错误:i 的类型是 int 而 ci 的类型是 const int
auto一般忽略顶层const(指针本身是一个常量,而底层const表示指针所指的对象是一个常量)
int i = 0 ;
const int ci = i ;
auto b = ci ; // b是 int 类型 而不是 const int 类型
const auto d = ci ; // 此时d的类型是 const int 类型
decltype: 从表达式的类型推断出要定义的变量的类型。
选择并返回操作数的数据类型,编译器分析表达式并得到它的类型,却不实际计算表达式的值:
decltype ( f() ) sum = x ; // sum的类型就是函数 f 的返回类型,但编译器并不实际调用函数 f
decltype返回变量的类型包括顶层const 和引用
const int ci = 0, &cj = ci ;
decltype(ci) x = 0 ; // x的类型是 const int
decltype(cj) y = x; // y的类型是 const int& , y 是x 的别名
decltype(cj) z ;
// 错误:z 是一个引用,必须初始化
切记:decltype((variable)) (双层括号)的结果永远是引用,而decltype(variable)结果只有当variable本身是引用是才是引用。
使用auto可以在一条语句中声明多个变量,但必须是同一数据类型的
auto i = 0, *p = &i ; // i是整数、p是整型指针
auto m = 0, n = 3.14 ; // 不能这样定义,m和n数据类型不一致
int i = 0 ;
const int ci = i ;
auto &n = i, *p = &ci ; // 错误:i 的类型是 int 而 ci 的类型是 const int
auto一般忽略顶层const(指针本身是一个常量,而底层const表示指针所指的对象是一个常量)
int i = 0 ;
const int ci = i ;
auto b = ci ; // b是 int 类型 而不是 const int 类型
const auto d = ci ; // 此时d的类型是 const int 类型
decltype: 从表达式的类型推断出要定义的变量的类型。
选择并返回操作数的数据类型,编译器分析表达式并得到它的类型,却不实际计算表达式的值:
decltype ( f() ) sum = x ; // sum的类型就是函数 f 的返回类型,但编译器并不实际调用函数 f
decltype返回变量的类型包括顶层const 和引用
const int ci = 0, &cj = ci ;
decltype(ci) x = 0 ; // x的类型是 const int
decltype(cj) y = x; // y的类型是 const int& , y 是x 的别名
decltype(cj) z ;
// 错误:z 是一个引用,必须初始化
切记:decltype((variable)) (双层括号)的结果永远是引用,而decltype(variable)结果只有当variable本身是引用是才是引用。
相关文章推荐
- c++11之auto自动类型推断和decltype类型获取
- c++:自动获取数据类型,auto与decltype的异同
- C++ 11 学习1:类型自动推导 auto和decltype
- 类型别名,auto类型说明符,decltype类型指示符
- c++基础--auto类型说明符/decltype类型指示符
- C++11:"auto"和"decltype"类型说明符的思考
- C++ 11 学习1:类型自动推导 auto和decltype
- HOW TO:获取文件类型图标和类型说明
- Java中获取自动产生类型的字段的集合
- 讨论一下js获取响应中后台传回来的BigInteger类型的数字时,后几位会自动变为0的问题
- 使用强类型DataSet增加数据并获取自动增长的ID
- [C++11/14] 自动类型推导——auto
- C++11标准 类型别名 auto decltype 范围for循环等测试
- C++学习笔记之auto类型说明符
- mysql设置数据库字段类型,保存时自动获取数据库服务器时间
- 获取表结构信息(字段名,类型,长度,精度,小数位数,主键,自动增长)
- Visual Studio2010新特性--auto 数据类型自动类型判别
- java对byte,short,char,int,long运算时自动类型转化情况说明
- C++11系列-改进的类型推导:auto、decltype和新的函数语法
- 2.5类型别名,auto, decltype