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;
}
可以用普通的指针来指向和访问静态成员
例:
#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++中指向类的静态成员的指针的认识
- C++指向类成员函数的指针
- c++ 指向 类成员函数(thiscall)的 函数指针
- C++的静态成员函数指针
- C/C++学习笔记:指向类成员变量的指针
- 指向非静态成员指针和指向静态成员指针
- C++ 指向类的成员的指针
- C++指向类成员函数的指针
- C++指向成员的指针-成员指针
- C++关于this指针、静态变量和静态成员函数 http://www.cnblogs.com/clrmas/archive/2010/03/23/1692893.htm
- C++ 类 & 对象-C++ 内联函数-C++ this 指针-C++ 类的静态成员
- [翻译]C++教程:指向成员函数的指针
- C++ 指向成员的指针(数据成员指针,函数成员指针)
- 指针指向类的静态数据成员
- C++关于this指针、静态变量和静态成员函数
- C++指向类成员函数的指针
- C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?
- 成员指针和指向静态成员的指针
- 成员函数指针和指向静态成员函数的指针
- C++中,静态指针成员变量