静态函数成员

静态函数成员

静态成员函数可以直接访问该类的静态数据和函数成员。而访问非静态成员,必须通过对象。

例:

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;
}

编译结果:

总结:采用静态函数成员的好处是可以不依赖于任何对象,直接访问静态数据。

posted @ 2019-09-28 23:52  喃猫  阅读(496)  评论(0编辑  收藏  举报