对类的静态成员的访问不依赖于对象可以用普通的指针来指向和访问静态成员 例: #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;
}
如果觉得《c++ 指向类的静态成员的指针》对你有帮助,请点赞、收藏,并留下你的观点哦!