类的静态数据成员与静态成员函数

1、有时候类需要它的一些成员与类本身直接相关,而不是与类的各个对象保持联系。

2、静态数据成员、静态成员函数不与任何对象绑定在一起,静态成员函数不包含this指针,静态成员函数不能声明成const,而且也不能在static函数体内使用this指针。这一限制既适用于this的显式使用,也对调用非静态成员的隐式使用有效。

3、class Account{

 public:

  void calculate() {}

static double rate(){}

static void rate (double);

private:

std::string owner;

double amount;

static double interestRate;

static double initRate();

}

使用作用域运算符访问静态成员

double r;

r=Account::rate();

仍可以使用类的对象、引用和指针来访问静态成员:

Account ac1;

Account *ac2=&ac1;

r=ac1.rate();

r=ac2->rate();

成员函数不通过作用域运算符就可以直接使用静态成员。

4、可以在内部和外部定义静态成员函数,static声明必须在类的内部。

类的静态数据成员不是由构造函数初始化,必须在类的外部定义和初始化每个静态成员。

5、静态成员可以是不完全类型,而非静态不行

可以使用静态成员做默认实参,而非静态不行。

猜你喜欢

转载自blog.csdn.net/weixin_41484240/article/details/81392767