对C++中的类的静态数据成员和静态函数成员的认识

来源:互联网 发布:日本皇室 知乎 编辑:程序博客网 时间:2024/06/04 00:54

类包含数据成员和函数成员,它们都可以声明为静态成员。

在声明数据成员的前面加上static就声明了一个静态数据成员,例如:static int a;就声明了一个具有静态生存期的静态数据成员,静态数据成员和普通数据成员的区别是普通数据成员只能用对象访问,而静态数据成员则可以通过类名和对象两种方式访问。静态数据成员又叫做类属性,因为这个数据成员是类拥有的,而不是某一个具体对象拥有。通过类名访问的方式:类名::静态数据成员名。

在声明函数成员的前面加上static就声明了一个静态函数成员,例如:static voidshowCount();

就声明了一个具有静态生存期的静态函数成员,静态函数成员的访问方式也有两种,通过类名和对象,通过类名的方式:类名::函数成员。静态函数成员也是属于整个类所共有的,不是某一个对象的,所有对象都对它进行维护和使用。静态函数成员可以直接访问类的静态成员,如果要访问非静态成员,必须通过对象名,举个例子:

class A{

public:

static void f(A a);

……

private:

int x;

}

void A::f(A a){

  cout<<x;      //这个不对,不能直接访问。

  cout<<a.x;    //这个对,要通过对象访问。

};

通过这个例子大家可以看出用静态函数成员访问非静态成员必须要通过对象名。在实际运用中,静态函数成员通常用来访问静态成员。

为什么要通过对象名来访问呢?这是因为非静态成员的访问必须经过对象才能调用,而在普通的函数成员调用数据成员时,实际上也是隐含了通过目的对象访问数据成员,因此,用静态函数成员访问非静态成员时,必须指出对象,才能访问非静态成员。

以上就是我对类的静态数据成员和静态函数成员的一些认识。

 

0 0
原创粉丝点击