如何定义⼀个类成员的指针(成员变量或成员函数)⾸先看我从⽹上引⽤的东西:
“指向数据成员的指针格式如下:
<;类型说明符><;类名>::*<;指针名>
指向成员函数的指针格式如下:
<;类型说明符>(<;类名>::*<;指针名>)(<;参数表>)
例如,设有如下⼀个类A:
class A
{
public:
int fun (int b) { return a*c+b; }
A(int i) { a=i; }
int c;
指针变量的定义格式private:
int a;
};
定义⼀个指向类A的数据成员c的指针pc,其格式如下:
int A:: *pc = &A::c;
再定义⼀个指向类A的成员函数fun的指针pfun,其格式如下:
int (A:: *pfun)(int) = A::fun;
”
/
(在书上看到这些类似的东西,⽐较纳闷,于是就在⽹上到了那篇东西~以下是我⾃⼰写的程序,在VC6下通过得了编译,但是在DEV-Cpp下⼜不⾏~~⾮常郁闷~)#include <iostream>
using namespace std;
class A
{
public:
virtual void f()
{
cout << "A::f was called" << endl;
}
};
class B:public A
{
public:
virtual void f()
{
cout << "B::f was called" << endl;
}
};
int main()
{
B b;
void (A::*pf)()=A::f;
(b.*pf)();
<();
return 0;
}
有了指针,还必须通过⼀个具体的类来引⽤!因为引⽤的不是⼀个具体的对象.所以pf并没有⼀个确切的地址.⽽是⼀个对象内相对的⼀个地址.在成员函数前⾯都加上staic,那就可以作为普通函数指针来处理
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论