问题标题: C++有哪些关键字(如while等能自动加粗的),越多越好

1
0
已解决
郑怡翔
郑怡翔
初级天翼
初级天翼

如题

我会以数量来衡量酷町豆,先10个,看看再悬赏

郑怡翔在2018-08-25 14:23:30追加了内容

大家把知道的都讲出来,谢啦

郑怡翔在2018-08-25 14:24:57追加了内容

在开学日我会结帖,大家注意一下时间哦

郑怡翔在2018-08-25 14:26:19追加了内容

悬赏10个

郑怡翔在2018-08-25 14:45:57追加了内容

注:剩下的人请不要重复前面的人的任意一个词,谢谢配合


1
已采纳
周天睿
周天睿
初级光能
初级光能

ture false int long double float void using nmaespace default case return for if else do while char switch break continue

生僻:goto new mutable export friend struct protected private auto volatile template signed operator this throw sizeof

virtual register public enum catch class union typename static inline short try delete explicit

3
时梓繁
时梓繁
修练者
修练者

C++有四种类型转换关键字,分别是:

            (1) . static_cast      (2)  const_cast   (3)  reinterpret_cast   (4) dynamic_cast

时梓繁在2018-08-25 14:44:49追加了内容

这四种类型转换关键字分别使用在不同的情况下。下文对这四个关键字进行比较分析:

             (1).static_cast   : 可以实现C++中内置基本数据类型之间的转换,如果涉及到类的话,static_cast只能在相互联系的类型中进行相互转换,不一定包含虚函数。

             (2).const_cast : 不能在不同种类间转换。相反,它仅仅把一个它作用的表达式转换成常量。它可以使一个本来不是const类型的数据转换成const类型的,或者把const属性去掉。

             (3).reinterpret_cast: 有着和c风格的强制转换同样的能力。它可以转化任何内置的数据类型为其他任何的数据类型,也可以转换任何指针类型为其他的类型。它甚至可以转化内置的数据类型为指针,无需考虑类型安全或者常量的情形。不到万不得已,不要轻易使用。

             (4).dynamic_cast :  

                               <1> : 其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。

                               <2> :不能用于内置的基本数据类型的强制转换。

                               <3> : dynamic_cast转换如果成功的话,返回的是指向类的指针或者引用,转换失败的话则返回NULL。

                              <4> : 使用dynamic_cast进行转换时,基类中一定要有虚函数,否则编译不通过。

1
袁翊凡
袁翊凡
新手光能
新手光能

true,false,for,int,float,double,long long,if,else等

1
1
赵天乐
赵天乐
高级守护
高级守护

asm

do

if

return

typedef

auto

double

inline

short

typeid

bool

dynamic_cast

int

signed

typename

break

else

long

sizeof

union

case

enum

mutable

static

unsigned

catch

explicit

namespace

static_cast

using

char

export

new

struct

virtual

class

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

register

true

 

delete

goto

reinterpret_cast

try

alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert、thread_local

const_cast、dynamic_cast、reinterpret_cast、static_cast。

 

asm

用于语法:

asm-definition:

asm ( string-literal ) ;

意义由实现定义,典型实现中传输其中的字符串给汇编器

折叠auto

在C++98/03中这个这个关键字用于声明块中的变量的生存期为自动生存期,若是对象同时具有自动存储类,即生存期在块结束时结束。这样的变量被称为局部变量。这个关键字不常用,因为即便省略,声明的默认就是auto的。

在C++11中,auto的含义改变为自动通过初值符推断声明的类型占位符。如声明auto i = 1;,auto就相当于int,因为1是int类型,可以推断出i的类型。也可以使用auto& i等声明,具体推导规则同模版参数类型推导。

折叠*_cast

即const_cast、dynamic_cast、reinterpret_cast、static_cast。

C++风格的类型转换。dynamic_cast是动态的,需要运行时支持;其它都是静态检查,相比C风格的类型转换更加细化,增强了类型安全性。

折叠bool,true,false

bool即布尔类型,属于基本类型中的整数类型,取值为真和假。true和false是具有bool类型的字面量,是右值,分别表示真和假。

折叠break,continue,goto

break用于跳出for或while循环或switch。continue用于跳转到循环起始。goto用于无条件跳转到函数内的标号。结构化程序较少使用goto,更多使用循环代替。

折叠case,default,switch

switch分支语句的起始,根据switch条件跳转到case标号或defalut标记的分支上。

折叠catch,throw,try

用于异常处理。try指定try块的起始,try块后的catch可以捕获异常。异常由throw抛出。throw在函数中还表示动态异常规范,但在C++11中被标记为过时(由noexcept部分取代)。

折叠char,wchar_t

表示字符型和宽字符型这些整数类型(属于基本类型),但一般只专用于表示字符。char(和signed char、unsigned char一起)事实上定义了字节的大小。

折叠const,volatile

const和volatile是类型修饰符,语法类似,在C++中合称为cv-限定符(cv-qualifier)。可以共同使用。用于变量或函数参数声明,也可以限制非静态成员函数。const表示只读类型(指定类型安全性,保护对象不被意外修改),volatile指定被修饰的对象类型的读操作是副作用(因此读取不能被随便优化合并,适合映射I/O寄存器等)。

折叠struct,class,union

用于类型声明。class是一般的类类型。struct在C++中是特殊的类类型,声明中仅默认隐式的成员和基类访问限定与class不同(struct是public,class是private)。union是联合体类型。满足特定条件类类型--POD struct或POD union可以和C语言中的struct和union对应兼容。

class还有个用途是在模版类型声明中作为表示模版类型参数或模版模版参数的语法的必要组成部分。前者也可被typename代替。

折叠delete,new

delete单独使用,表示释放具有动态存储期对象,默认版本调用全局的去配器(deallocator)::operator delete和析构函数。new单独使用,表示请求分配动态存储期对象,默认版本调用全局的分配器(allocator)::operator new和指定的析构函数。和operator连用表示分别表示去配器(operator delete)和分配器(operator new),用于释放分配器(allocator)的内存和分配内存。operator delete也在分配内存被异常中断时被调用。

折叠do,for,while

循环语句的组成部分。C++支持do-while循环、for循环和while循环。C++11新增了ranged-based for循环,用:分隔声明的对象和指定循环的范围。

折叠数值类型

即double、float、long、int、short、signed、unsigned。

signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。signed和unsigned修饰char类型,构成unsigned char和signed char,和char都不是相同的类型;不可修饰wchar_t、char16_t和char32_t。其它整数类型的signed省略或不省略,含义不变。signed或unsigned可单独作为类型,相当于signed int和unsigned int。

double和float专用于浮点数,double表示双精度,精度不小于float表示的浮点数。long double则是C++11指定的精度不小于double的浮点数。

其它关键字表示整数类型。从占用空间大小(sizeof)来看,保证char<=short<=int<=long<=long long。注意这些都不是相同的类型,即便大小和范围都一致;各自具有unsigned版本。其中long long是C++11指定的不小于long的整数。

折叠if,else

条件语句的组成部分。if表示条件,之后else表示否定分支。

折叠enum

构成枚举类型名的关键字。C++11新增带作用域的枚举,用enum class或enum struct(两者等价)声明。

折叠explicit

这个关键字修饰构造函数声明,表示显式构造函数(模版),显式构造函数不参与特定的重载

C++11从两个角度扩展了用法。其一是适用于转换函数(模版),类似构造函数,避免不需要的重载。其二是列表初始化,除非直接使用std::initializer_list,显式构造函数被列表初始化忽略(在C++98/03中,explicit仅对单一参数调用构造函数有意义,这里打破了这个限制)。

折叠export

导出模版,用于分离编译。当初标准委员会未经充分实践支持匆忙通过了这一决定,被EDG证明具备不现实的可用性(即便EDG唯一地实现了这一个特性,他们也表示反对) 。MSVC、GCC、Clang等其它主流编译器前端都没有实现这一特性,甚至这是唯一明显约定不符合C++98/03的特性。C++11废除了这个export关键字的含义,但保留这个关键字,供以后使用 。

折叠extern

extern意为"外来的",是存储类声明修饰符。这个关键字在C语言中即很不明确,容易被混淆(尤其是extern inline--好在C++没有这种用法)。extern表示被修饰的声明中,名称的链接保持和之前的一致(若已有相同声明存在),或保持默认值(若之前没有相同名称的声明存在)--取决于声明的位置。在命名空间作用域(注意包括全局命名空间),extern表示外部链接;若这里省略extern,则对于const对象,默认具有内部链接;否则表示具有和命名空间一致的链接(若顶层没有嵌套未命名的命名空间,就是外部链接,否则是内部链接)。

C++11新增extern用于模版显式实例化声明,表示不在当前翻译单元实例化模版,而在别处有定义。这可以提升编译效率。

折叠friend

声明友元,使其不受访问权限控制的限制。

折叠inline

声明定义内联函数(模版),提示编译时内联--将所调用的代码嵌入到主调函数中。注意是否内联取决于实现--编译器有权不实际内联,如果它认为这是必要的或更符合预期的目标代码质量。但inline还改变了ODR(One Definition Rule)的适用性。类似函数模版,在头文件直接定义inline函数不会视为重复定义违反ODR而编译出错。C++中,一个函数若声明inline,则每处声明都必须保证是inline,和C语言允许extern inline或static inline不同--尽管C++实现可以提供类似非标准的扩展。注意类成员函数若在类定义内给出定义则隐含inline。

C++11中,新增inline namespace,指示命名空间中的名称同时是外层命名空间直接包含的名称。这便于命名空间的版本管理,减少冲突。

折叠mutable

用于类的非静态非const数据成员,表示不受到成员函数的const的限制,可以在const成员函数中使用。

折叠namespace

表示命名空间--其中可以声明若干标识符,组成的名称与其它命名空间不冲突。

可以声明一个命名空间或命名空间别名。

折叠operator

和操作符连用,指定一个重载了的操作符函数,也包括operator new和operator delete。

折叠private,protected,public

指定类成员或基类中的名称的访问权限控制,分别表示仅供本类使用、供本类和派生类使用、不设限制。

折叠register

提示声明的对象被放入寄存器中以便得到更好的性能。同inline类似,并非强制;不同的是这个提示经常被现代的编译器无视,因此C++11中被标记为过时的。

折叠return

子程序返回语句,终止当前函数执行,使控制流返回到主调函数的调用后。若返回类型不是void可以同时带返回值。

折叠static

C语言类似,声明静态存储期对象,或指定一个函数的名称具有内部链接。在C++还有另一个用途--用于类作用域声明,表示声明的成员是类共有的,不需要通过类的对象访问。类的静态数据成员也具有静态存储期,除非被thread_local修饰。

折叠sizeof

返回类型名或表达式具有的类型对应的大小。不能对函数使用(虽然可能有非标准扩展)。C++11新增支持直接对类的数据成员作为操作数(之前无法使用)。sizeof的操作数是不被求值的,利用这一点可以配合模版元编程测试类型正确性。

折叠template

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

折叠this

this是一种实体,仅在类的非静态成员中使用,是指向类的对象的指针右值。

折叠typedef

用以给数据类型取别名。字面名义上是定义,实际只是声明--这点和C语言的说法不同。

C++11中可被using新增的用法代替。

折叠virtual

声明虚基类虚函数。具有虚基类或虚函数的类是多态类(polymorphic class),需要运行时提供支持来判断成员函数调用分派到的具体类型。

折叠typeid

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

折叠typename

告诉编译器一个嵌套的限定名(包含::)中的未知的标识符是一个类型。这只在模板中需要区分依赖名称时使用。

另一种用法是在模版声明参数列表中表示模版类型参数,可被class代替。

折叠using

有两种基本用法:using声明和using指示(using namespace ...)。

前者是声明,引入命名空间或基类作用域内已经被声明的名称。后者引入命名空间内所有的名称。

C++11新增了一类用法,可以代替typename,同时可以配合template使用(typedef基于语法考虑未被允许加入这种用法)。

折叠void

特殊的"空"类型,指定函数无返回值或无参数(在参数列表中只能够唯一地使用),用于表达式转换为void类型以丢弃计算值的必要(C++11加入了discarded-value-expression显式地指出了这一点),或用于void*指针类型。

折叠try

try,C++中用于异常处理的组合。

折叠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表示自动储存类型 ;C++11标准中,auto表示由编译器静态判断其应有的类型 。

赵天乐在2018-08-25 15:27:57追加了内容

C++98/03:

asm

do

if

return

typedef

auto

double

inline

short

typeid

bool

dynamic_cast

int

signed

typename

break

else

long

sizeof

union

case

enum

mutable

static

unsigned

catch

explicit

namespace

static_cast

using

char

export

new

struct

virtual

class

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

register

true

 

delete

goto

reinterpret_cast

try

赵天乐在2018-08-25 15:28:41追加了内容

c11新增:

alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert、thread_local

0
周天睿
周天睿
初级光能
初级光能

你说谁心虚呢?

export

导出模版,用于分离编译。当初标准委员会未经充分实践支持匆忙通过了这一决定,被EDG证明具备不现实的可用性(即便EDG唯一地实现了这一个特性,他们也表示反对) [7]  。MSVC、GCC、Clang等其它主流编译器前端都没有实现这一特性,甚至这是唯一明显约定不符合C++98/03的特性。C++11废除了这个export关键字的含义,但保留这个关键字,供以后使用 [3]  。

https://baike.baidu.com/item/C++关键字/5773813

勿举报,详情请见楼上评论

0
何羽凡
何羽凡
修练者
修练者

int for read while if double float char do void using namespace return long else 等等。

望采纳!

0
蒋智航
蒋智航
高级天翼
高级天翼

,你好啊

asm inline virtual auto goto or not bitand typename static this using namespace 
continue export typeid bool const return sizeof register delete public new void
union compl template class and bitor and_eq not_eq or_eq compl mutable operator 
const short xor xor_eq const_cast wchar_t typedef dynamic_cast enum struct case

//!@782
??1
//防伪标签

 

蒋智航在2018-08-26 21:00:50追加了内容

复ۖิ制ۖิۖิ这ۖิ几ۖิ个ۖิ字ۖิ看ۖิ你ۖิ多ۖิ久ۖิ能ۖิ删ۖิ完ۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิۖิ ิۖิۣ ۣۣۖۖۖۖิۖิิۣۣۖۖิ ۖิิۣۣۖۖิۣ ۣۣۖۖ(´・ω・`)

0
0
0
傅文彬
傅文彬
新手天翼
新手天翼

int bool char float double

if else

for do -while do break continue 

傅文彬在2018-08-29 20:10:22追加了内容

using namespace

傅文彬在2018-08-29 20:10:50追加了内容

const

0
蒋智航
蒋智航
高级天翼
高级天翼

 

asm inline virtual auto goto or not bitand typename static this using namespace

 

continue export typeid bool const return sizeof register delete public new void

 

union compl template class and bitor and_eq not_eq or_eq compl mutable operator

 

const short xor xor_eq const_cast wchar_t typedef dynamic_cast enum struct case

 

采纳采纳


asm inline virtual auto goto or not bitand typename static this using namespace 

continue export typeid bool const return sizeof register delete public new void

union compl template class and bitor and_eq not_eq or_eq compl mutable operator 

const short xor xor_eq const_cast wchar_t typedef dynamic_cast enum struct case






哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

 

0
尹宗鑫
尹宗鑫
新手守护
新手守护

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

0
尹宗鑫
尹宗鑫
新手守护
新手守护

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

0
袁翊凡
袁翊凡
新手光能
新手光能

struct 这个不生僻啊,这是结构体定义方式

0
宋梓涵
宋梓涵
新手光能
新手光能

C++关键字

关键字(keyword)又称保留字,是整个语言范围内预先保留的标识符。每个C++关键字都有特殊的含义。经过预处理后,关键字从预处理记号(preprocessing-token)中区别出来,剩下的标识符作为记号(token),用于声明对象函数类型命名空间等。不能声明与关键字同名的标识符

中文名

C++关键字

外文名

C++ keywords

学    科

计算机科学

专    业

程序设计

目录

  1. 简介
  2. ▪ C++98/03 关键字
  3. ▪ 关键字的改变
  4. C++11详解
  5. ▪ alignas
  6. ▪ constexpr
  7. ▪ char16_t 和 char32_t
  8. ▪ decltype
  9. ▪ nullptr
  10. ▪ noexcept
  11. ▪ static_assert
  12. ▪ auto
  13. 其它详解
  1. ▪ asm
  2. ▪ auto
  3. ▪ *_cast
  4. ▪ bool,true,false
  5. ▪ break,continue,goto
  6. ▪ case,default,switch
  7. ▪ catch,throw,try
  8. ▪ char,wchar_t
  9. ▪ const,volatile
  10. ▪ struct,class,union
  11. ▪ delete,new
  12. ▪ do,for,while
  1. ▪ 数值类型
  2. ▪ if,else
  3. ▪ enum
  4. ▪ explicit
  5. ▪ export
  6. ▪ extern
  7. ▪ friend
  8. ▪ inline
  9. ▪ mutable
  10. ▪ namespace
  11. ▪ operator
  12. ▪ private,protected,public
  13. ▪ register
  1. ▪ return
  2. ▪ static
  3. ▪ sizeof
  4. ▪ template
  5. ▪ this
  6. ▪ typedef
  7. ▪ virtual
  8. ▪ typeid
  9. ▪ typename
  10. ▪ using
  11. ▪ void
  12. ▪ try

 

简介

编辑

各个版本的ISO C++都规定以下划线接大写字母或下划线起始的标识符保留给实现,编译器可以用这些保留标识符作为扩展关键字,这不保证可移植性。

 

C++98/03 关键字

ISO C++98/03关键字共63个,此处严格按标准原文排版:

asm

do

if

return

typedef

auto

double

inline

short

typeid

bool

dynamic_cast

int

signed

typename

break

else

long

sizeof

union

case

enum

mutable

static

unsigned

catch

explicit

namespace

static_cast

using

char

export

new

struct

virtual

class

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

register

true

 

delete

goto

reinterpret_cast

try

 

[1-2] 

 

关键字的改变

C++11 关键字共73个。

新增关键字:alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert、thread_local。 [3] 

auto 的意义改变。 [4] 

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

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

 

C++11详解

编辑

 

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表示由编译器静态判断其应有的类型 [4]  。

 

其它详解

编辑

 

asm

用于语法:

asm-definition:
  asm ( string-literal ) ;

意义由实现定义,典型实现中传输其中的字符串给汇编器

 

auto

在C++98/03中这个这个关键字用于声明块中的变量的生存期为自动生存期,若是对象同时具有自动存储类,即生存期在块结束时结束。这样的变量被称为局部变量。这个关键字不常用,因为即便省略,声明的默认就是auto的。 [6] 

在C++11中,auto的含义改变为自动通过初值符推断声明的类型占位符。如声明auto i = 1;,auto就相当于int,因为1是int类型,可以推断出i的类型。也可以使用auto& i等声明,具体推导规则同模版参数类型推导。 [4] 

 

*_cast

即const_cast、dynamic_cast、reinterpret_cast、static_cast。

C++风格的类型转换。dynamic_cast是动态的,需要运行时支持;其它都是静态检查,相比C风格的类型转换更加细化,增强了类型安全性。

 

bool,true,false

bool即布尔类型,属于基本类型中的整数类型,取值为真和假。true和false是具有bool类型的字面量,是右值,分别表示真和假。

 

break,continue,goto

break用于跳出for或while循环或switch。continue用于跳转到循环起始。goto用于无条件跳转到函数内的标号。结构化程序较少使用goto,更多使用循环代替。

 

case,default,switch

switch分支语句的起始,根据switch条件跳转到case标号或defalut标记的分支上。

 

catch,throw,try

用于异常处理。try指定try块的起始,try块后的catch可以捕获异常。异常由throw抛出。throw在函数中还表示动态异常规范,但在C++11中被标记为过时(由noexcept部分取代)。

 

char,wchar_t

表示字符型和宽字符型这些整数类型(属于基本类型),但一般只专用于表示字符。char(和signed char、unsigned char一起)事实上定义了字节的大小。

 

const,volatile

const和volatile是类型修饰符,语法类似,在C++中合称为cv-限定符(cv-qualifier)。可以共同使用。用于变量或函数参数声明,也可以限制非静态成员函数。const表示只读类型(指定类型安全性,保护对象不被意外修改),volatile指定被修饰的对象类型的读操作是副作用(因此读取不能被随便优化合并,适合映射I/O寄存器等)。

 

struct,class,union

用于类型声明。class是一般的类类型。struct在C++中是特殊的类类型,声明中仅默认隐式的成员和基类访问限定与class不同(struct是public,class是private)。union是联合体类型。满足特定条件类类型——POD struct或POD union可以和C语言中的struct和union对应兼容。

class还有个用途是在模版类型声明中作为表示模版类型参数或模版模版参数的语法的必要组成部分。前者也可被typename代替。

 

delete,new

delete单独使用,表示释放具有动态存储期对象,默认版本调用全局的去配器(deallocator)::operator delete和析构函数。new单独使用,表示请求分配动态存储期对象,默认版本调用全局的分配器(allocator)::operator new和指定的析构函数。和operator连用表示分别表示去配器(operator delete)和分配器(operator new),用于释放分配器(allocator)的内存和分配内存。operator delete也在分配内存被异常中断时被调用。

 

do,for,while

循环语句的组成部分。C++支持do-while循环、for循环和while循环。C++11新增了ranged-based for循环,用:分隔声明的对象和指定循环的范围。

 

数值类型

即double、float、long、int、short、signed、unsigned。

signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。signed和unsigned修饰char类型,构成unsigned char和signed char,和char都不是相同的类型;不可修饰wchar_t、char16_t和char32_t。其它整数类型的signed省略或不省略,含义不变。signed或unsigned可单独作为类型,相当于signed int和unsigned int。

double和float专用于浮点数,double表示双精度,精度不小于float表示的浮点数。long double则是C++11指定的精度不小于double的浮点数。

其它关键字表示整数类型。从占用空间大小(sizeof)来看,保证char<=short<=int<=long<=long long。注意这些都不是相同的类型,即便大小和范围都一致;各自具有unsigned版本。其中long long是C++11指定的不小于long的整数。

 

if,else

条件语句的组成部分。if表示条件,之后else表示否定分支。

 

enum

构成枚举类型名的关键字。C++11新增带作用域的枚举,用enum class或enum struct(两者等价)声明。

 

explicit

这个关键字修饰构造函数声明,表示显式构造函数(模版),显式构造函数不参与特定的重载

C++11从两个角度扩展了用法。其一是适用于转换函数(模版),类似构造函数,避免不需要的重载。其二是列表初始化,除非直接使用std::initializer_list,显式构造函数被列表初始化忽略(在C++98/03中,explicit仅对单一参数调用构造函数有意义,这里打破了这个限制)。

 

export

导出模版,用于分离编译。当初标准委员会未经充分实践支持匆忙通过了这一决定,被EDG证明具备不现实的可用性(即便EDG唯一地实现了这一个特性,他们也表示反对) [7]  。MSVC、GCC、Clang等其它主流编译器前端都没有实现这一特性,甚至这是唯一明显约定不符合C++98/03的特性。C++11废除了这个export关键字的含义,但保留这个关键字,供以后使用 [3]  。

 

extern

extern意为“外来的”,是存储类声明修饰符。这个关键字在C语言中即很不明确,容易被混淆(尤其是extern inline——好在C++没有这种用法)。extern表示被修饰的声明中,名称的链接保持和之前的一致(若已有相同声明存在),或保持默认值(若之前没有相同名称的声明存在)——取决于声明的位置。在命名空间作用域(注意包括全局命名空间),extern表示外部链接;若这里省略extern,则对于const对象,默认具有内部链接;否则表示具有和命名空间一致的链接(若顶层没有嵌套未命名的命名空间,就是外部链接,否则是内部链接)。

C++11新增extern用于模版显式实例化声明,表示不在当前翻译单元实例化模版,而在别处有定义。这可以提升编译效率。

 

friend

声明友元,使其不受访问权限控制的限制。

 

inline

声明定义内联函数(模版),提示编译时内联——将所调用的代码嵌入到主调函数中。注意是否内联取决于实现——编译器有权不实际内联,如果它认为这是必要的或更符合预期的目标代码质量。但inline还改变了ODR(One Definition Rule)的适用性。类似函数模版,在头文件直接定义inline函数不会视为重复定义违反ODR而编译出错。C++中,一个函数若声明inline,则每处声明都必须保证是inline,和C语言允许extern inline或static inline不同——尽管C++实现可以提供类似非标准的扩展。注意类成员函数若在类定义内给出定义则隐含inline。

C++11中,新增inline namespace,指示命名空间中的名称同时是外层命名空间直接包含的名称。这便于命名空间的版本管理,减少冲突。

 

mutable

用于类的非静态非const数据成员,表示不受到成员函数的const的限制,可以在const成员函数中使用。

 

namespace

表示命名空间——其中可以声明若干标识符,组成的名称与其它命名空间不冲突。

可以声明一个命名空间或命名空间别名。

 

operator

和操作符连用,指定一个重载了的操作符函数,也包括operator new和operator delete。

 

private,protected,public

指定类成员或基类中的名称的访问权限控制,分别表示仅供本类使用、供本类和派生类使用、不设限制。

 

register

提示声明的对象被放入寄存器中以便得到更好的性能。同inline类似,并非强制;不同的是这个提示经常被现代的编译器无视,因此C++11中被标记为过时的。

 

return

子程序返回语句,终止当前函数执行,使控制流返回到主调函数的调用后。若返回类型不是void可以同时带返回值。

 

static

C语言类似,声明静态存储期对象,或指定一个函数的名称具有内部链接。在C++还有另一个用途——用于类作用域声明,表示声明的成员是类共有的,不需要通过类的对象访问。类的静态数据成员也具有静态存储期,除非被thread_local修饰。

 

sizeof

返回类型名或表达式具有的类型对应的大小。不能对函数使用(虽然可能有非标准扩展)。C++11新增支持直接对类的数据成员作为操作数(之前无法使用)。sizeof的操作数是不被求值的,利用这一点可以配合模版元编程测试类型正确性。

 

template

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

 

this

this是一种实体,仅在类的非静态成员中使用,是指向类的对象的指针右值。

 

typedef

用以给数据类型取别名。字面名义上是定义,实际只是声明——这点和C语言的说法不同。

C++11中可被using新增的用法代替。

 

virtual

声明虚基类虚函数。具有虚基类或虚函数的类是多态类(polymorphic class),需要运行时提供支持来判断成员函数调用分派到的具体类型。

 

typeid

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

 

typename

告诉编译器一个嵌套的限定名(包含::)中的未知的标识符是一个类型。这只在模板中需要区分依赖名称时使用。

另一种用法是在模版声明参数列表中表示模版类型参数,可被class代替。

 

using

有两种基本用法:using声明和using指示(using namespace ...)。

前者是声明,引入命名空间或基类作用域内已经被声明的名称。后者引入命名空间内所有的名称。

C++11新增了一类用法,可以代替typename,同时可以配合template使用(typedef基于语法考虑未被允许加入这种用法)。

 

void

特殊的“空”类型,指定函数无返回值或无参数(在参数列表中只能够唯一地使用),用于表达式转换为void类型以丢弃计算值的必要(C++11加入了discarded-value-expression显式地指出了这一点),或用于void*指针类型。

 

try

try,C++中用于异常处理的组合。

宋梓涵在2018-08-25 15:11:32追加了内容

采纳的人是大帅哥!!!

0
张舒斌
张舒斌
中级光能
中级光能

我吉岛,c++关键字:

auto     bool    break    case    catch
char     class    const     const_cast    continue
详细关键字请见书本:
青少年信息学奥林匹克竞赛培训教材c++培训教程第257页

 

0
赵逸凡
赵逸凡
初级启示者
初级启示者

大总结

存储结构:using,namespace,void,return,inline,const,auto,static,extern,register

顺序结构:int,double,long,float,short,unsigned,signed(以前的版本是的)

选择结构:if,else,switch,case,bool,true,false,default,and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq

循环结构:for,do,while,break,continue,goto

数组结构:char,sizeof

动态规划:new, delete

结构体系:struct,class,enum,union,typedef

指针结构:asm, export, typeid, volatile

家庭树系:this, friend, virtual, mutable, explicit, operator

异常内型:catch, throw, try

派生树系:private, protected, public

@郑怡翔 

望采纳,谢谢,

 

 

 

 

 

 

0
我要回答