您的位置:首页 > 编程语言 > C语言/C++

c++ 指向类的静态成员的指针

2012-07-07 18:45 232 查看
对类的静态成员的访问不依赖于对象
可以用普通的指针来指向和访问静态成员

例:
#include <iostream>

using namespace std;

class point

{

public:

point(int xx=0, int yy=0)

{

X = xx;

Y = yy;

countP++;

}

point(point &p); //拷贝构造函数

int getX()

{

return X;

}

int getY()

{

return Y;

}

static int countP;

private:

int X, Y;

};

point::point(point &p)

{

X = p.X;

Y = p.Y;

countP++;

}

int point::countP=0; //静态数据成员定义性说明

int main()

{

//声明一个int型指针,指向类的静态成员

int *count = &point::countP;

point A(5, 6);

cout << "point A, " << A.getX() << " ," << A.getY() << endl;

//直接通过指针访问静态数据成员

cout << "object id = " << *count << endl;

point B(A); //声明对象B

cout << "point B, " << B.getX() << " ," << B.getY() << endl;

//直接通过指针访问静态数据成员

cout << "object id = " << *count << endl;

return 0;

}

例二:
#include <iostream>

using namespace std;

class Point

{

public:

static void getC() // <== 静态函数成员

{

cout << "object id = " << countP << endl;

}

Point(int x, int y)

{

X = x;

Y = y;

}

int getX()

{

return X;

}

int getY()

{

return Y;

}

Point(Point &p);

private:

int X, Y;

static int countP; // <== 静态成员变量,引用性说明

};

Point::Point(Point &p)

{

X = p.X;

Y = p.Y;

countP++;

}

int Point::countP = 0; // <== 静态数据成员定义性说明

int main()

{

void (*gc)() = Point::getC;

Point A(5, 8);

cout << "Point A, " << A.getX() << ", " << A.getY() << endl;

(*gc)(); // <=== 打印出来静态成员的值

Point B(A);

cout << "Point B, " << B.getX() << ", " << B.getY() << endl;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: