C++ 关键字

 
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
  1. 对and之类的关键字含义如下:
    and          &&
    and_eq   &=
    bitand      &
    bitor         |
    compl      ~
    not           !
    or             ||
    or_eq      |=
    xor           ^
    xor_eq    ^=
    not_eq    !=
  2. auto 声明了一个自动变量,即一个只在块运行时有效的变量。一个auto变量仅在声明它的块内是可见的。
    {
    auto int i;    // 显式的声明为auto.
    int      j;    // 隐式的声明为auto.
    }两种声明是等效的,我们一般在写程序时没有声明为auto,其实是隐式的声明。
  3. explicit 用来修饰类的构造函数,表明该构造函数是显式的,默认是隐式的。在构造函数的前面添加上explicit,这样就可以防止自动的转换操作。
  4. 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。
  5. 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则是不能修改的。
  6. register 一般的变量是放在内存中的,其存取速度和内存速度相当,而rigister变量是存放在寄存器当中的,其存取速度和cpu是一个数量级的。但是编译器只能保证在可能情况下使用寄存器,如果寄存器满了的话,也只好使用内存了。一般能的rigister变量数量很有限,如果不能声明为rigister变量时编译器自动把它当成一般内存变量。对于rigister变量是不能取其地址的。
  7. volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化。volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错。
  8. wchar_t  A type wchar_t is provided to hold characters of a larger character set such as Unicode.wchar_t 是一个宽字符类型。
 关于类型转换类键字以后再这介绍,这里写的篇幅比较长了,写得太长大怕大家没有耐心把它看完呀。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值