设为首页 加入收藏

TOP

C++ 中的处理类型(三)
2014-04-06 17:35:25 来源: 作者: 【 】 浏览:192
Tags:  处理 类型

 

  三、decltype 类型指示符

  C++11 新标准引入了 decltype,它的作用是选择并返回操作数的数据类型,但并不实际计算表达式的值,如果使用的表达式是一个变量,则 decltype 返回该变量的类型(包括顶层 const 和引用在内):

  <CODE>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 是一个引用,必须初始化

  int i = 42, *p = &i, &r = i;

  decltype(r + 0) b;    // 正确,加法的结果是 int

  decltype(r) b;   // 结果是引用类型

  decltype(*p) c;   // 错误,c 是 int&,必须初始化

  </CODE>

  如果表达式的内容是解引用操作,则 decltype 将得到引用类型,如上面的 decltype(*p) c;,c 就是一个引用类型

  decltype 的结果与表达式的形式密切相关,对于 decltype 所用的表达式来说,如果变量名加上了一对括号,则得到的类型与不加括号时有所不同:

  <CODE>// decltype 的表达式如果是加上了括号的变量,结果将是引用

  decltype((i)) d;  // 错误,d 是 int&,必须初始化

  decltype(i) e;   // 正确,e 是一个未初始化的 int

  </CODE>

  切记:decltype((variable))(注意是双层括号)的结果永远是引用,而 decltype(variable)结果只有当 variable 本身就是一个引用时才是引用

      

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇LuaBridge为Lua绑定C/C++对象 下一篇C++ 指针的偏移

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)
·C语言指针的定义和使 (2025-12-26 05:21:31)
·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)