您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记之关键字

2017-01-10 11:51 330 查看
总结C++关键字

ISO C++98/03关键字共63个,同C语言相同的关键字32个

控制结构关键字(12):
跳转结构:break,continue,goto,return
分支结构:if,else,switch,case,default
循环结构:while,do,for

存储类关键字(6):auto,static,extern, const,volatile, register
复杂类型关键字(5):union, enum,struct,sizeof,typedef
简单类型修饰符(4):short,long,signed,unsigned
简单类型(5):void,char,int,float,double

C++独有关键字31个

存储类关键字(1):mutable
复杂类型关键字(2):typeid,class
简单类型(2):wchar_t,bool
bool类型字面量(2):false,true 

异常处理(3):catch,throw,try
类型转换(5):dynamic_cast, static_cast,const_cast,reinterpret_cast,explicit

内存管理(2):new,delete
名字空间(2):namespace,using
权限修饰(4):protected,private,public,friend
模板(3):template,typename,export
类相关(4):operator(重载操作符),virtual(虚函数),inline(内联函数),this
asm(汇编)

C++11 关键字共73个,新增关键字10个。
新增关键字:alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert、thread_local

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

constexpr
类似const但更强大,修饰函数或对象,表示函数结果或对象是编译时决定的常量,以便优化。(const不能修饰一般的函数,也不一定指定声明的对象能编译期的常量表达式,更可能只是只读对象。而在C语言中,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表示自动储存类型[6]  ;C++11标准中,auto表示由编译器静态判断其应有的类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息