第一篇:C++11关键字

C++11 关键字共73个。

新增关键字: alignas、alignof、char16_t、char32_t、constexpr、decltype、

noexcept、nullptr、static_assert、thread_local。
auto 的意义改变。

register 被视为过时的(可能在未来标准移除)。

export 因为实现支持太少(仅Edison Design Group的前端支持),编译效率低下,取消原有意义(仍是关键字,但使用它的程序是错误的),改为保留给未来标准使用。 

alignas

alignof用于获取取指定表达式指定的(类似sizeof,可以直接是类型名)的对齐(alignment)。alignas用于声明时指定对齐类似于现有的类型。和sizeof类似,两者的操作数都不被求值。

constexpr

类似const但更强大,修饰函数或对象,表示函数结果或对象是编译时决定的常量,以便优化。

char16_t 和 char32_t

二者分别表示16位字符型和32位字符型,类似char和wchar_t,也是一般只专用于表示字符的整数类型,且设计上用于表示Unicode字符。char16_t和char32_t是C++11新增的,以克服wchar_t在不同平台上无法保证确定宽度的缺点。

decltype

用于编译时推断类型。此外参与函数声明的另一种语法:指定返回auto,同时decltype引导trailing-return-type指定实际应该返回类型。decltype的操作数也不被求值。

nullptr

字面量nullptr是具有std::nullptr_t类型的右值,是空指针常量。C++98/03中表示空指针常量的NULL或0都会在重载中引起混淆,而纯库的解决方案在这里也遇到困难,所以有必要加入新的关键字来专门表示空指针。

noexcept

实践表明动态异常规范会影响运行时性能。新增的noexcept表示静态异常规范,只指定函数(模版)是否有异常抛出,这里noexcept即noexcept(true),表示没有异常抛出。除了异常规范,noexcept可以作用于一个表达式来判断是否有异常,这对于模版代码非常有用。

static_assert

用于编译时的静态断言:若指定的表达式为false则编译失败。

auto

C++11标准和C++98/03标准的auto是不同的。C++98/03标准中,auto表示自动储存类型 ;C++11标准中,auto表示由编译器静态判断其应有的类型。

C++98/03关键字


asm

语法:asm(“instruction”)
asm允许在C/C++程序中直接插入汇编语言指令
//汇编代码块
asm

instruction-sequence

//or单条汇编指令
asm(instruction);

auto

关键字auto用来声明一个自动存储变量,也就是申明一块临时的变量内存。在C++98/C++03标准里auto的定义如上,但在C++11之后的标准里auto的临时变量的主义不再存在 ,auto被定义为自动类型推断,例如:

//这里的x被auto推断为double类型

auto x=1.2;

//这里的iter被auto推断为vector<string>::iterator类型

vector<string> vec; auto iter = vec.begin();
在C++11标准中auto关键字有一个限定条件:声明变量时必须赋一个初始值,否则编译阶段报错。
因为声明为auto的变量在编译时期就分配了内存,而不是到了运行时期,所以使用auto不再引发任何速度延迟,这也意味着使用auto的时候,这个变量不初始化会报错。因为编译器无法知道这个变量的类型。
C++11标准里不能用auto来定义一个函数类型,但在新的C++14标准里就可以使用了。
看例子:
C++11:
std::vector<int>& add_one(std::vector<int> &v)
{
for(auto& it : v)
it += 1;
return v;
}
C++14:
auto& add_one(std::vector<int>& v)
{
for(auto& it : v)
it += 1;
return v;
}
C++14中可以根据函数返回类型来判断,如果函数是递归的,递归调用必须定义在至少一个return语句后,下面的代码是正确的,但两个return语句调换位置则是错误的。
auto Correct(int i)
{
if(i == 1)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值