类的静态成员函数(static)是属于类的所有对象所共有,存放在静态存储区,不可以在定义中出现分配内存的语句(如int a=9;)。
本次的实例是说类的静态成员函数在使用时可以不用先定义一个对象,然后通过对象来调用,但是非static函数,就必须通过对象来调用。
#include
using namespace std;
class Point
{
private:
int x,y;
static int set;
public:
Point():x(0),y(0){}
Point(int a,int b):x(a),y(b){}
static void GetPoint(){cout<
void ShowPoint(){cout<
<<" "<
};
int Point::set=0;
int main()
{
Point::GetPoint(); //call GetPoint() without define an object
//Point::ShowPoint(); //wrong ShowPoint() is not static
Point point(3,4);
point.ShowPoint();
return 0;
}
这个程序同时还说明static成员函数只能访问static成员变量,无法访问非static成员变量。
另外还用一个最近在使用透明画刷的时候用到的这一点:
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
//attention! FromHandle() is a static function,can be uesed without be intilized
所以自己也明白了,如果没有掌握基本的c++知识,也很难明白建立在c++知识之上MFC应用。