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)

第一篇:C++11关键字相关推荐

  1. java会变得更简单吗_spring 第一篇(1-1):让java开发变得更简单(下)

    切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...

  2. 微信公众号开发入门教程第一篇

    微信公众号开发入门教程第一篇 关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/ ...

  3. Python之路【第一篇】:Python简介和入门

    Python之路[第一篇]:Python简介和入门 Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗 ...

  4. 第一篇【Python】基础-关东升-专题视频课程

    第一篇[Python]基础-833人已学习 课程介绍         本书是智捷课堂开发的立体化图书中的一本,所谓"立体化图书"就是图书包含:书籍.视频.课件和服务等内容. 其中第 ...

  5. 【前端三剑客三】JavaScript手术刀剖析第一篇

    文章目录 一.初始JavaScript 1.JavaScript是什么 2.JavaScript . HTML . CSS 之间的关系 3.JavaScript 运行过程 4.JavaScript 的 ...

  6. 精通WordPress设计与开发:第1章 你的 第一篇WordPress帖子

    说明:搭建网站时随手选了WordPress,后来发现国内过于WordPress的文章很少,系统化的更少,于是决定自己翻译一本.原书名<Professional WordPress Design ...

  7. 第一篇:linux(ubuntu)系统实操学习

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.linux的认识 1.Linux的应用领域 2.Linux学习建 ...

  8. linux的自定义input,Linux Input子系统之第一篇(input_dev/input_handle/input_handler)

    Input子系统是linux kernel中与部分外围器件驱动联系比较紧密的模块,常用于Sensor,TP(touch panel),power key等器件的驱动.这类模块有个共同特点:字符设备,且 ...

  9. RabbitMQ学习总结 第一篇:理论篇

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

最新文章

  1. python的datetime模块
  2. 计算机游戏50关,YELLOW游戏全50关攻略
  3. python flask框架是什么_Flask框架是什么?带你安装运行第一个Flask程序
  4. ajax control toolkit vs2013,VS2008 .net framework 3.5使用Ajax Control Toolkit完整解决方案
  5. python小说全站爬虫_起点小说网全站爬虫(Python)
  6. Scrapy简单入门及实例讲解
  7. 鸡蛋究竟宜不宜生吃——看阿里云计算怎么破?
  8. Caffe学习系列(13):数据可视化环境(python接口)配置 jupyter notebook
  9. 使用Native API查询Windows硬盘分区系统设备名称
  10. python2.0安装教程_Python2.7 【安装教程】
  11. 计算机系统的用户分几类,计算机操作系统的几种分类方式
  12. 原生JS实现登录框邮箱提示
  13. 初学HTML5:Web workers
  14. 查看服务器操作系统版本信息,查看服务器操作系统版本信息
  15. 优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads...
  16. 用TensorFlow实现非线性支持向量机
  17. 探索<赛博朋克>风格游戏美术
  18. iOS中AppTrackingTransparency(ATT)设置方法和注意事项
  19. keil代码排版问题
  20. JS数组扁平化flat,reduce等六种方式实现

热门文章

  1. R语言计算累积平均值(Cumulative Average)、使用cumsum函数和seq_along函数计算data.frame指定数据列的累积平均值、并添加累积平均值数据列
  2. excel数据统计函数
  3. font:12px/14px是什么意思?
  4. 论文摘要写作(来自维基百科)
  5. 华为三层交换机配置DHCP
  6. flutter 九宫格菜单_flutter九宫格看图加强版
  7. windows上后台运行程序
  8. 鸿蒙系统网络连接设置ip,修改本地连接的TCP/IP属性设置
  9. so books_使用《纽约时报》和Google Books API建立畅销书清单
  10. php爬虫相关书籍,GitHub - wuxiwei/library_reptiles: PHP多进程实现图书馆爬虫