decltype 类型指示符-C++11 新特性

从表达式的类型推断出要定义的变量的类型,但是不想用该表达式的值初始化变量。

如:decltype(f()) sum = x;//sum的类型就是函数f 返回类型

1.decltype处理顶层const引用的方式与auto不同。

    decltype返回该变量的类型(顶层const 和 引用在内):  

    const int ci = 10, & cj = ci;
    decltype(ci) k = 20;//const int
    cout << "k:" << k << endl;
    //k = 30;
    decltype(cj) d = k;//const int &
    //d = 100;
    cout << "d:" << d << endl;

decltype(cj) z;//错误:const int & 需要初始化

2.如果decltype使用的是一个不加括号的变量,则得到的就是该变量的类型;

   如果给变量加上了一层或多层括号,编译器就会把它当成一个表达式。

3.赋值是会产生引用的一类典型表达式,引用的类型就是左值的类型。

 4.下面的 r + 0是一个具体的数值而非一个引用;

解引用指针可以得到指针所指的对象,而且还能给这个对象赋值,

因此decltype(*p)的类型是int&,而非int

 

以上内容来自,C++ primer 5

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿土有品

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值