C++ - 静态成员变量与静态成员函数

2016-01-15  本文已影响774人  Mitchell
class Rectangle
{
  private:
      int w,h;
      static int nTotalArea;//静态成员变量,被所有的同类对象所共享,修改了一个对象的属性,其他成员也一起跟着修改;
      static int nTotalNumber;
  public:
      CRectangle(int w_,int h_)
      ~CRectangle();
      static void PrintTotal();//静态成员函数
}
class CMyclass{
    int n;
    static int s;
};
//则sizeof(CMyclass)等于4

如何访问静态成员

class CRectangle
{
  private: int w,h;
    static int nTottalArea;
    static int nTotalNumber;
  public:
    CRectangle(int w_,int h_);
    ~CRectangle;
    static void PrintTotal();
};
CRectangle::CRectangle(int w_,int h_)
{
  w = w_;
   h = h_;
  nTotalNumber++;
  nTotalArea += w*h;
}
CRectangle::~CRectangle()
{
  nTotalNumber --;
  nTotalArea -= w*h;
}
void CRectangle::PrintTotal()
{
  cout<<nTotalNumber<<","<<nTotalArea<<endl;
}

***注意:静态成员变量必须在文件中进行一次说明或者初始化。否则编译能通过,链接不能通过。

int CRectanle::nTotalNumber = 0;
int CRectanle::nTotalArea = 0;
int main()
{
    CRectangle r1(3,3),r2(2,2);
    CRectangle::PrintTotal();
    r1 PrintTotal();
    return();
}

void CRectangle::PrintTotal()
{
//不允许这样写
    cout<<w<<","<<...<<endl;
}
CRectangle::PrintTotal();//解释不通,w 到底是属于哪个对象的?
CRectangle::CRectangle(CRectangle & r)
{
    w = r.w; h =r.h;
    nTotalNumber++;
    nTotalArea +=w*h;
}
上一篇下一篇

猜你喜欢

热点阅读