静态函数成员
静态函数成员
静态成员函数可以直接访问该类的静态数据和函数成员。而访问非静态成员,必须通过对象。
例:
class A{
public:
static void f(A,a);
private:
int x;
};
void A::f(A,a){
cout<<x; //对x的引用是错误的
cout<<a.x; //正确
}
具体事例:
#include "pch.h"
#include <iostream>
using namespace std;
class point { //Point 类定义
public: // 外部接口
point(int x = 0, int y = 0) :x(x), y(y) { //构造函数
//在构造函数中对count累加,所有对象共同维护同一个count
count++;
}
point(point &p) { //复制构造函数
x = p.x;
y = p.y;
}
~point() { count--; }
int getx() { return x; }
int gety() { return y; }
static void showcount() { //静态函数成员
cout << "obiect count=" << count << endl;
}
private: //私有数据成员
int x, y;
static int count; //静态数据成员声明,用于记录点的个数
};
int point::count = 0; //静态数据成员定义和初始化,实用类名限定
int main() {
point a(4, 5); //定义对象a,其构造函数会使count增1
cout << "point a:" << a.getx() << "," << a.gety() << endl;
point::showcount(); //输出对象个数
point b(a); //定义对象b,其构造函数会使count增1
cout << "point b:" << b.getx() << "," << b.gety() << endl;
point::showcount(); //输出对象个数
return 0;
}
编译结果:
总结:采用静态函数成员的好处是可以不依赖于任何对象,直接访问静态数据。