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表示由编译器静态判断其应有的类型
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表示由编译器静态判断其应有的类型
相关文章推荐
- C++的explicit关键字 学习笔记
- C++基础学习笔记----第一课(关键字的变化)
- static关键字用法学习笔记(C++)
- C++学习笔记,显示类型强制转换,关键字static_cast
- 我的小小学习笔记(4)----C++的关键字
- C++学习笔记——共用数据的保护(const关键字)
- C++的explicit关键字 学习笔记
- C++学习笔记:3.3.6 派生类中的static关键字
- C++ 学习笔记2----sizeof关键字
- C++学习笔记六——内存模型和名称空间、关键字
- C++学习笔记--explicit关键字
- C++学习笔记---const 关键字
- c++学习笔记(4.c++中新的关键字)
- C++学习笔记(初级篇)——作用域与“extern”关键字
- C++学习笔记二(extern关键字详解)
- 【C++学习笔记】const关键字
- c++学习笔记(4.c++中新的关键字)
- C++学习笔记7,const关键字的使用(一)。
- 【菜鸟C++学习笔记】27.通过operator关键字进行类型转换
- C++学习笔记9 C++新的关键字