现在的位置: 首页 > 综合 > 正文

C++关键字

2013年10月09日 ⁄ 综合 ⁄ 共 3929字 ⁄ 字号 评论关闭

C++关键字
————
2013年3月13日

http://blog.csdn.net/shunqiziranhao007/article/details/8655844

————
ISO C++98/03,63个关键字
bool, true, false,char, wchar_t, short, int, long, signed, unsigned, float, double。
struct, class, union, enum
private, protect, public
operator, new, delete, return
if, else, do, for, while, switch, case, default, break, continue, goto
using, namespace
auto, extern, register, static, typedef, sizeof, typename, void, this
const, volatile, mutable
explicit, export, friend, inline, virtual
static_cast, const_cast, dynamic_cast, reinterpret_cast, typeid
throw, try, catch
asm, template

————
bool, true, false,char, wchar_t, short, int, long, signed, unsigned, float, double
————
内置类型分为两类,整型和浮点型。即除了浮点型就是整型。
The arithmetic types that represent integers, characters, and boolean values are
collectively referred to as the integral types.
bool中,除了0是false其他都是true,1和-1都是true。
wchar_t原来是内置类型啊。宽字符串L“”。
整型要注意值溢出问题,机器是32位还是64位,有无符号,大小端。
signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。
从占用空间大小(sizeof)来看,保证char<=short<=int<=long<=long long。注意这些都不是相同的类型,即便大小和范围都一致;各自具有unsigned版本。
浮点数要注意不能直接拿来比较相等而应该比较两数的差值的绝对值在某个误差内(如FLT_EPSILON,0.000001);不能用于switch语句。

————
struct, class, union, enum
————
struct和class都可以用于类类型声明。区别就是class的默认访问权限是private,而struct是public。
class还有个用途是在模版类型声明中作为表示模版类型参数或模版模版参数的语法的必要组成部分。可被typename代替。
union是联合体类型。
enum枚举。

————
private, protect, public
————
访问控制权限,在class和struct中使用。

————
operator, new, delete, return
————
operator,和操作符连用,指定一个重载了的操作符函数,也包括operator new和operator delete。
return,子程序返回语句,终止当前函数执行,使控制流返回到主调函数的调用后。若返回类型不是void可以同时带返回值。

————
if, else, do, for, while, switch, case, default, break, continue, goto
————
if, else,条件语句的组成部分。
do, for, while, 循环语句的组成部分。C++支持do-while循环、for循环和while循环。
switch分支语句的起始,根据switch条件跳转到case标号或defalut标记的分支上。switch不支持浮点型。注意case里声明变量的问题,还有break的问题。
break用于跳出for或while循环或switch。
continue用于跳转到循环起始。
goto用于无条件跳转到函数内的标号。尽量少用。

————
using, namespace
————
using声明,引入命名空间或基类作用域内已经被声明的名称
using指示(using namespace xx),引入命名空间内所有的名称。
namespace,表示命名空间——其中可以声明若干标识符,组成的名称与其它命名空间不冲突。可以声明一个命名空间或命名空间别名。

————
auto, extern, register, static, typedef, sizeof, typename, void, this
————
auto默认,不管。
extern用来说明使用外部定义。
register,提示声明的对象被放入寄存器中以便得到更好的性能。同inline类似,并非强制;不同的是这个提示经常被现代的编译器无视,因此C++11中被标记为过时的。
static,见C++ static。
typedef,声明别名。
typename,告诉编译器一个嵌套的限定名(包含::)中的未知的标识符是一个类型。这只在模板中需要区分依赖名称时使用。另一种用法是在模版声明参数列表中表示模版类型参数,可被class代替。
void,特殊的“空”类型,指定函数无返回值或无参数(在参数列表中只能够唯一地使用),用于表达式转换为void类型以丢弃计算值的必要或用于void*指针类型。
this,是一种实体,仅在类的非静态成员中使用,是指向类的对象的指针右值。

————
const, volatile, mutable
————
见 C++ const。

————
explicit, export, friend, inline, virtual
————
explicit,修饰构造函数声明,表示显式构造函数,这样就不会发生隐式转换了。
export,还没用到,无爱。
friend,见C++ friend。
inline,见C++ inline。
virtual, 见C++ virtual。

————
static_cast, const_cast, dynamic_cast, reinterpret_cast, typeid
————
见C++类型转换(cast)。
typeid,获取表达式的类型,以std::type_info表示结果,可能抛出std::bad_typeid。当操作数非多态类(引用)类型在编译时即可确定结果,否则需要在运行时取得结果,即RTTI。

————
throw, try, catch
————
异常处理。

————
asm
————
asm-definition:
asm ( string-literal ) ;
意义由实现定义,典型实现中传输其中的字符串给汇编器。
VC Syntax:
__asm assembly-instruction [ ; ]
__asm { assembly-instruction-list } [ ; ]

————
template
————
声明一个模板、模版的特化或显式实例化。模版用于打破类型系统的某些限制,推迟类型检查到实例化得到具体的模版实例进行以复用代码,实现泛型和参数化编程。

————
以下摘自百度百科,后面自己再慢慢总结。
————
————
ISO C++11新增的关键字的含义
————
alignof,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则编译失败。

————
thread_local
————
线程局部存储(thread local storage)存储类。C++11增加多线程环境的正式支持,也支持了线程局部存储,以便于每个线程保存特定于线程自身的公共状态。

抱歉!评论已关闭.