C++11特性中,decltype、类内初始化、列表初始化三者结合,如何构成一种高效编程方式?

2026-04-18 23:491阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1245个文字,预计阅读时间需要5分钟。

C++11特性中,decltype、类内初始化、列表初始化三者结合,如何构成一种高效编程方式?

作用:返回表达式或变量的类型 + 返回值规则:- 若e是一个左值(lvalue,即可寻址值),则decltype(e)将返回T- 若e是一个右值(xvalue,即临时值),则返回T- 若e是一个纯右值(prvalue,即纯右值),则返回T- 返回

作用:返回表达式或变量的类型

返回值规则:

  • 若e是一个左值(lvalue,即“可寻址值”),则decltype(e)将返回T&
  • 若e是一个临终值(xvalue),则返回值为T&&
  • 若e是一个纯右值(prvalue),则返回值为T

decltype()不会执行括号内的表达式,decltype返回的类型是用于声明的,不能用于单纯的判断。比如decltype(a)==int,是不可以的,只能是在定义新的变量、返回值的地方使用:

int a=1; decltype(a) b (等价于int b)

若是给变量加多了1个括号,则会成为一个表达式。

int a = 1; int b=2; decltype((a)) d=b // decltype((a)) 返回类型int&。而引用必须赋初值,所以这里的d必须赋初值。

若表达式和指针相关的用法:

设p是指向int变量的指针

  1. decltype(*p)-》返回int& 即引用
  2. decltype(p)-》返回int* 即指针
  3. decltype(&p)-》返回int** 即指针的指针。
阅读全文

本文共计1245个文字,预计阅读时间需要5分钟。

C++11特性中,decltype、类内初始化、列表初始化三者结合,如何构成一种高效编程方式?

作用:返回表达式或变量的类型 + 返回值规则:- 若e是一个左值(lvalue,即可寻址值),则decltype(e)将返回T- 若e是一个右值(xvalue,即临时值),则返回T- 若e是一个纯右值(prvalue,即纯右值),则返回T- 返回

作用:返回表达式或变量的类型

返回值规则:

  • 若e是一个左值(lvalue,即“可寻址值”),则decltype(e)将返回T&
  • 若e是一个临终值(xvalue),则返回值为T&&
  • 若e是一个纯右值(prvalue),则返回值为T

decltype()不会执行括号内的表达式,decltype返回的类型是用于声明的,不能用于单纯的判断。比如decltype(a)==int,是不可以的,只能是在定义新的变量、返回值的地方使用:

int a=1; decltype(a) b (等价于int b)

若是给变量加多了1个括号,则会成为一个表达式。

int a = 1; int b=2; decltype((a)) d=b // decltype((a)) 返回类型int&。而引用必须赋初值,所以这里的d必须赋初值。

若表达式和指针相关的用法:

设p是指向int变量的指针

  1. decltype(*p)-》返回int& 即引用
  2. decltype(p)-》返回int* 即指针
  3. decltype(&p)-》返回int** 即指针的指针。
阅读全文