C++部分关键字总结

auto
C++11引入的auto关键字实现类型退到,通过这个关键字不仅能方便地获取复杂的类型,而且还能简化书写,提高编码效率。

auto x = 5;   //OK
auto pi = new auto(1);  //OK
const auto *v = &x, u = 6;  //OK
auto int r;   //error:auto不在表示存储类型指示符,这也是新更改的特性
auto str;     //error:无法推导出str类型

Note:v与u的推导需要注意两个小地方
1)虽然经过前面const auto *v = &x 的推导,auto的类型可以确定为int,但是u仍然必须要写后面的“=6”,否则编译不通过。
2)U的初始化不能使编译器推导产生二义性。ep:u = 6改为 u = 6.0, 编译器会报错。

auto并不代表实际的类型声明,仅仅是一个类型声明的“占位符”。

使用auto声明的变量必须马上初始化,让编译器推导出它的实际类型,并在编译时将auto占位符替换为真正的类型。

在C++11之前,auto 表示“具有自动存储期的局部变量”,不过其实它在这方面的作用不大,auto int i = 1; 对这个我们再熟悉不过了。不写auto也是一样的效果就是为了跟static int j = 1;区分开来而已。

auto推导可以和指针,引用结合起来使用,还可以带上const,volatile限定符。

int x = 1;
const auto e =x;     //const int
auto f = e;         //int
const auto& g = x;   //const int&
auto& h= g;    //const int& 

从上面的例子不难看出:
1)当不声明为指针和引用时,auto的推导结果和初始化表达式抛弃引用和CV限定符后类型一致。
2)当声明为指针或者引用时,auto的推导结果将保持初始化表达式的cv属性。

decltype
decltype关键字,用来在编译时推导出一个表达式的类型。语法格式:

decltypeexp
int x = 0;
decltype(x) y = 1;   // y->int
const int& i = x;    //i->const int &
d
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值