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
类