类型别名+auto类型说明符+decltype类型说明符
来源:互联网 发布:锐捷网络的网址 编辑:程序博客网 时间:2024/05/17 04:46
1.类型说明符
typedef
typedef double wages;
typedef wages base; *p;//p是double*的同义词;
using
using SI=Sales_item;//SI是Sales_item的同义词
理解下面的类型别名:
typedef char *Pstring;
const Pstring cstr=0;//cstr是指向char的常量指针
const Pstring *ps;//ps是一个指针,他指向的对象是一个指向char的常量指针
注意下面这种理解是错误的;
const char* cstr=0//指向常量的指针
2.auto类型说明符
编译器推断出来的auto类型有时和初始值得类型并不完全一样,编译器会适当的改变结果类型并使其更符合初始化规则。
(1)引用: int i=0,&r=i;
auto a=r;//a是一个整数类型
(2)auto一般会忽略顶层const(即自身的常量性),同事保留底层const:
const int ci=i,&cr=ci;
auto b=ci;//b的类型是int(顶层const被忽略)
auto c=cr;//c的类型是int(ci本身也是顶层const)
auto d=&i;//d的类型是int*
auto e=&ci;//e的类型是const int*
如果希望推断出auto的顶层const,需要明确指出
const auto f=ci;
还可以将引用的类型设为auto,此时原来的初始化规则仍然适用:
auto &g=ci;//g是一个整型常量引用;
auto &h=42;//错误,把非常量引用绑定的字面值
const auto &j=42:;//正确,可以为常量引用绑定字面值
3.decltype类型指示符
应用情况:有时希望从表达式的类型推断出要定义的变量类型,但不想用该表达式的值初始化变量。
decltype(f())sum=x;//sum的类型就是函数f的返回类型
decltype处理顶层的const和引用的方式与auto有点不同。如果decltype使用的表达式是一个变量,则decltype返回该变量的类型(包括顶层const和引用):
const int ci=0,&cj=ci;
decltype (ci) x=0;//x的类型是 const int
decltype(cj) y=x;//y 的类型是const int&
decltype(cj) z;//错误,z是引用必须初始化
需要指出的是。引用从来都是作为其所指对象的同义词出现,只有用在decltype处是一个例外。
decltype和引用
如果decltype使用的表达式不是一个变量,则decltype返回表达式结果对应的类型,
但有些表达式将向decltype返回一个引用类型,一般发生这种情况,意味着该表达式的结果能作为一条赋值语句的左值:
int i=42,*p=&i,&r=i;
decltype(r+0) b;//正确,加法的结果是int。所以。。。
decltype(*p) c;//错误:c是int&,必须初始化,如果表达式的类型是解引用类型,则decltype将得到引用类型;
decltype和auto的另一处重要不同是;decltype的结果与表达式的形式密切相关。例如,如果使用的是一个不加()的变量,则得到的结果是该变量类型,如果加上一层或多层,编译器就会把他当做一个表达式。变量时一种可以作为赋值语句左值的特殊表达式,所以这样的decltype就会得到引用类型:
decltype((i)) d;//错误:d是int&必须初始化
decltype(i) d;//d是一个未初始化的int
- 类型别名+auto类型说明符+decltype类型说明符
- 类型别名、auto类型说明符和decltype类型说明符初探
- 类型别名,auto类型说明符,decltype类型指示符
- 类型别名定义及auto类型说明符
- C++ decltype类型说明符
- C++ decltype类型说明符
- c++基础--auto类型说明符/decltype类型指示符
- 自动获取类型的auto和decltype类型说明符
- auto类型说明符
- [C++] auto类型说明符
- auto类型说明符
- auto类型说明符
- C++ auto类型说明符
- auto类型说明符
- auto类型说明符
- c++ auto类型说明符
- C++11:"auto"和"decltype"类型说明符的思考
- C++11--auto类型说明符
- app会被拒绝的原因
- 11g RAC 修改PUBLIC-IP、VIP、PRIV-IP、SCAN-IP
- java学习好,看看的那个人
- Unity Windows选择图片并加载
- sql server DEFAULT约束的增加与删除
- 类型别名+auto类型说明符+decltype类型说明符
- iOS:编译错误Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/b
- MAC AppStore下载失败,请到已购买页面重新下载
- Eclipse maven构建springmvc项目(转)
- Spring 两种注入的方式(Set和构造)实例
- VS2010 Web网站发布详解
- 【Unity3D自学记录】利用WinRAR的自解压功能单文件发布Unity的PC版本包
- ubuntu 安装microsoft office
- Slf4j和Log4j