C++11新增语法(糖)

新增类型

long long

C++11标准中新加入了long long类型属性,占用空间不小于long类型。

long large = LONG_MAX;
long long long_large = LLONG_MAX;
long long long_long_large = 1LL << 63;
cout<<"test long long:"<<large<<'\t'<<long_large<<'\t'<<long_long_large<<endl;

测试结果显示long long与long类型均为64bit。

nullptr字面量

新增这个关键字用来初始化一个空指针,可以用来转换为其他任何类型的指针,这个关键字用来替代以前的字面值0NULL两种初始化空指针的方式。

类型相关

auto类型推断

auto关键字,可以让编译器帮我们分析表达式的类型,类似模版形参推断。
需要注意的是:

  • 使用auto定义的变量必须有初始值,不然无法进行类型推断
  • 在同一条语句中使用auto定义的变量,其基础类型必须一致
double val1 = 1.1, val2 = 2.2;
auto sum = val1 + val2;
auto val3 = 0.3, *p = &val3;

double val6 = 1.6, &rval6 = val6;
auto aval6 = rval6;
aval6 = 6.0; // aval6 is not a reference.
  • 顶层const,指的是当前的数据类型本身是常量,如double,int或者相关的指针本身是常量
  • 底层const,指的是如指针、引用等复合类型,其所指向的数据类型是常量

auto在进行类型推断时,一般会忽略顶层const(top-level const),而保留底层const(low-level const)。如果想要保留顶层const,则必须显式的在auto前添加const指示符。

const int ci = 1, &cr = ci;
auto b = ci; //b是一个整数,忽略顶层const
auto c = cr; //c是int类型,cr是ci的别名,具有的顶层const忽略了
auto d = &ci; //d是一个指向整形常量的指针

auto &e = ci; //e是一个绑定到ci整形常量的引用
const auto &f = 12; //f是一个整形常量引用,绑定到常量字母量,auto &g = 12是错误的

decltype声明类型

decltype(expr)可以获得expr表达式对应的类型,并且不会对expr具体求值。


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值