C++关键字
and and_eq asm auto bitand bitor |
bool break case catch char class |
compl const const_cast continue default delete |
do double dynamic_cast else enum explicit |
export extern false float for friend |
goto if inline int long mutable |
namespace new not not_ eq operator or |
or_ eq private protected public register reinterpret_ cast |
return short signed sizeof static static_cast |
struct switch template this throw true |
try typedef typeid typename union unsigned |
using virtual void volatile wchar_t while |
xor xor_eq |
- 对and之类的关键字含义如下:
and &&
and_eq &=
bitand &
bitor |
compl ~
not !
or ||
or_eq |=
xor ^
xor_eq ^=
not_eq != - auto 声明了一个自动变量,即一个只在块运行时有效的变量。一个auto变量仅在声明它的块内是可见的。
{
auto int i; // 显式的声明为auto.
int j; // 隐式的声明为auto.
}两种声明是等效的,我们一般在写程序时没有声明为auto,其实是隐式的声明。 - explicit 用来修饰类的构造函数,表明该构造函数是显式的,默认是隐式的。在构造函数的前面添加上explicit,这样就可以防止自动的转换操作。
- export 允许将模板声明从模板定义中分离出来。
/ / file1.c:
export template<class T> T twice(T t ) { returnt +t ; }
/ / file2.c:
template<class T> T twice(T t ) ; // declaration
intg(int i) { return twice(i ); }
The keyword export means ‘‘accessible from another translation unit’’。
函数模版的编译模式分两种:完全包含编译模式和局部编译模式。模版函数在使用的源文件中既要include模版函数的声明,也要include模版函数的定义(因为只有在编译的时候,根据模版函数的定义进行实例化后生成的函数才是真正的函数定义)。export关键字只有在使用局部编译模式时才会用到,同时需要编译器支持局部编译模式,如果编译器不支持这种编译模式,那么不能使用export。 - mutable mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。
class Date {
mutable bool cache_valid ;
mutable string cache ;
void compute_cache_value () const ; // fill (mutable) cache
/ / ...
public :
/ / ...
string string_rep() const ; // string representation
};
mutable means ‘‘can never be const .’’表示在一个const修饰的成员函数里是可以修改类的成员变量值的,如是没有加mutable则是不能修改的。 - register 一般的变量是放在内存中的,其存取速度和内存速度相当,而rigister变量是存放在寄存器当中的,其存取速度和cpu是一个数量级的。但是编译器只能保证在可能情况下使用寄存器,如果寄存器满了的话,也只好使用内存了。一般能的rigister变量数量很有限,如果不能声明为rigister变量时编译器自动把它当成一般内存变量。对于rigister变量是不能取其地址的。
- volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化。volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错。
- wchar_t A type wchar_t is provided to hold characters of a larger character set such as Unicode.wchar_t 是一个宽字符类型。
关于类型转换类键字以后再这介绍,这里写的篇幅比较长了,写得太长大怕大家没有耐心把它看完呀。