C++11特性中,decltype、类内初始化、列表初始化三者结合,如何构成一种高效编程方式?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1245个文字,预计阅读时间需要5分钟。
作用:返回表达式或变量的类型 + 返回值规则:- 若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变量的指针
- decltype(*p)-》返回int& 即引用
- decltype(p)-》返回int* 即指针
- decltype(&p)-》返回int** 即指针的指针。
本文共计1245个文字,预计阅读时间需要5分钟。
作用:返回表达式或变量的类型 + 返回值规则:- 若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变量的指针
- decltype(*p)-》返回int& 即引用
- decltype(p)-》返回int* 即指针
- decltype(&p)-》返回int** 即指针的指针。

