C++语言关键字

 

关键字是预先保留的标识符,每个关键字都有特殊的含义。我们不能在程序中使用与关键字同名的标识符。以下是C++所保留的关键字全集。

 

(1)asm
asm已经被__asm替代了,用于汇编语言嵌入在C/C++程序里编程,从而在某些方面优化代码.虽然用asm关键字编译时编译器不会报错,但是asm模块的代码是没有意义的.

 

(2)auto 
这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是

auto的。

 

(3)bad_cast,const_cast,dynamic_cast,reinterpret_cast,static_cast

 

(4)bad_typeid
也是用于异常处理的,当typeid操作符的操作数typeid为Null指针时抛出。

 

(5)bool
不用多说了吧,声明布尔类型的变量或函数.

 

(6)break
跳出当前循环.

 

(7)case
switch语句分支.

 

(8)catch,throw,try
都是异常处理的语句。

 

(9)char
声明字符型变量或函数.

 

(10)class
声明或定义类或者类的对象.

 

(11)const
被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。它可以修饰函数的参数、返回值,甚至函数的定义体。 
作用: 
1.修饰输入参数 
      a.对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const引用传递”,目的是提

高效率。例如将void Func(A a) 改为void Func(const A &a)。 
      b.对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。否则既达不

到提高效率的目的,又降低了函数的可理解性。例如void Func(int x) 不应该改为void Func(const int

&x)。 
2.用const修饰函数的返回值 
      a.如果给以“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能

被修改,该返回值只能被赋给加const修饰的同类型指针。 
如对于:const char * GetString(void); 
如下语句将出现编译错误: 
char *str = GetString();//cannot convert from 'const char *' to 'char *'; 
正确的用法是: 
const char *str = GetString(); 
      b.如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加

const修饰没有任何价值。 如不要把函数int GetInt(void) 写成const int GetInt(void)。 
3.const成员函数的声明中,const关键字只能放在函数声明的尾部,表示该类成员不修改对象. 
说明: 
const type m; //修饰m为不可改变 
示例: 
typedef char * pStr; //新的类型pStr; 
char string[4] = "abc"; 
const char *p1 = string; 
p1++; //正确,上边修饰的是*p1,p1可变 
const pStr p2 = string; 
p2++; //错误,上边修饰的

是p2,p2不可变,*p2可变 
同理,const修饰指针时用此原则判断就不会混淆了。

const int *value; //*value不可变,value可变 
int* const value; //value不可变,*value可变 
const (int *) value; //(int *)是一种type,value不可变,*value可变 
//逻辑上这样理解,编译不能通过,需要tydef int* NewType; 
const int* const value;//*value,value都不可变

 

(12)continue
结束当前循环,开始下一轮循环.

 

(13)default
switch语句中的默认分支.


(14)delete
经常用于动态内存分配的语句。

 
(15)do
在do-while循环结构中开始循环体。

 

(16)double
声明双精度变量或函数.

 

(17)else
条件语句否定分支(与 if 连用).

 

(18)enum
声明枚举类型.

 

(19)explicit

这个关键字声明说明符,可以只适用于同类构造函数声明。显式构造函数不能在隐式转换的一部分。它只能用于显式构造一个对象。

 

(20)export
MSDN只说The export keyword is not supported on templates.一种导出语句吧..

 

(21)extern

 

(22)false,true
bool类型的两个枚举值.

 

(23)float
声明浮点型变量或函数.

 

(24)for
一种循环语句。

 

(25)friend
声明友元函数或者类。

 

(26)goto
无条件跳转语句。

 

(27)if
条件语句。常与else一起用。

 

(28)inline
声明定义内联函数,编译时将所调用的代码嵌入到主函数中。

 

(29)int
声明整型变量或函数.

 

(30)long
声明长整型变量或函数.

 

(31)mutable
这个关键字只适用于非静态和非const数据类成员。如果一个声明数据成员是可变的,那么它在const成员函数的赋值是合法。

 

(32)namespace
动态导入到文档中的元素行为
c++中using namespace std


(33)new
动态内存分配。返回一个适当类型、非零对象的指针


(34)operator

 

(35-37)private, protected, public

类私有/保护/公有函数和数据成员的标示.


(38)register 
声明寄存器变量.

 

(39)return
子程序返回语句(可以带参数,也看不带参数),返回函数调用点。


(40)short
声明短整型变量或函数.

 

(41)signed,unsigned
声明有符号类型变量或函数;声明无符号类型变量或函数.

 

(42)static
声明静态变量.

 

(43)struct
声明结构体变量或函数.

 

(44)switch

条件选择


(45)template
模板.

 

(46)this
访问类,结构或者联合的非静态成员函数。

(47)typedef
用以给数据类型取别名.

 

(48)typeid
用于获取一个在编译时类型的类型 

 

(49)typename
仅在模板中使用,告诉编译器是一个未知的type。

 

(50)union
声明联合数据类型.

 

(51)using

 

(52)virtual

声明虚基类或虚函数。

 


(53)void
声明函数无返回值或无参数,声明无类型指针.

 

(54)volatile 

 


(55)wchar_t
宽字.

 

(56)while
循环语句的循环条件

 

(57)class

posted @ 2011-10-17 20:46  Iacocca Yan  阅读(1567)  评论(0编辑  收藏  举报