zoukankan      html  css  js  c++  java
  • decltype类型指示符

    一、关键词

    • 从表达式的类型推断出要定义的变量的类型

      示例:decltype(i) x = 0;    //等价于int x = 0;

    二、复合类型、const

    	const int ci = i, &cj = ci;
    	decltype(ci) x = 0;		//保留顶层const,x的类型是const int 
    	decltype(cj) y = x;		//y的类型是const int &,而不是ci的类型,y绑定到变量x 
    	decltype(cj) z;			//错误:z是一个引用,必须初始化

    1. 引用

      和auto不同,当表达式为一个引用别名时,它不会将类型声明为该别名所绑定的对象的类型,而是保留为引用的类型

    2. const

      和auto不同,它可以保留顶层const

    三、decltype和引用

    如果decltype使用的表达式不是一个变量,则decltype返回表达式结果对应的类型。

    注:有些表达式会向decltype返回一个引用类型,这一般意味着该表达式的结果对象可以作为一条赋值语句的左值

    1. 如果表达式的内容是解引用操作,则decltype将得到引用类型。

    如:int i = 3, *p = &i;  decltype(*p) c = i;    //c是int &,必须初始化

    2. 如果给变量加上一层或多层括号,编译器会把它当作一个表达式,同样会得到引用类型。

    如:decltype((i)) d = i;      //d是int &,必须初始化

    【补充】

    举例:使用关键字decltype的时候,其表达式的求值结果若是左值,decltype作用于该表达式(不能是变量)得到一个引用类型。例如,p的类型是int *,因为解引用运算符生成左值,所以decltype(*p)的结果是int &。而另一方面,因为取地址运算符生成右值,所以decltype(&p)的结果是int **,即结果是一个指向整型指针的指针。

  • 相关阅读:
    AFNetworking 使用总结
    FMDB 直接将查询结果转化为字典
    NSArray 与 NSMutableArray 的排序
    iOS 用UISearchDisplayController实现查找功能
    (转)一句话实例化模型
    OC KVC总结
    OC 解决NSArray、NSDictionary直接打印中文出现乱码的问题
    配置SecureCRT密钥连接Linux
    公司服务器安装——防火墙设置
    给公司服务器装web服务器,邮件服务器——安装SecureCRT
  • 原文地址:https://www.cnblogs.com/xzxl/p/7651426.html
Copyright © 2011-2022 走看看