C++ 静态成员能用于某些场合,而普通成员不能

来源:互联网 发布:网易uu加速器mac 编辑:程序博客网 时间:2024/04/30 15:42

  静态成员独立于任何对象。因此,在某些非静态数据成员可能非法的场合,静态成员却可以正常地使用。举个例子,静态数据成员可以是不完全类型。特别的,静态数据成员的类型可以就是它所属的类类型。而非静态数据成员则受到限制,只能声明它所属的指针或引用:

  class Bar{

  public:

    //....

  private:

    static Bar mem1;//正确:静态成员可以是不完全类型

    Bar *mem2;//正确

    Bar mem3;//错误

   };

  另一个区别是,我们可以使用静态成员作为默认实参

  class Screen {

  public:

    Screen& clear(char = bkground);

  private:

    static const char bkground;

  };

  非静态数据成员不能作为默认实参,因为它的值本身属于对象的一部分,这么做的结果是无法真正提供一个对象以便从中获取成员的值,最终将引发错误。

0 0