比如我有:如何获取虚拟方法的地址,如果我有指向基类对象的指针?
class A{
public:
virtual void run(){...}
};
class B:public A {
public: void run(){...}
};
A* ptr= new B();
我只有一个指针“ptr'.I知道,指针的类型是‘A *’,但我不知道它是否指向类的反对” A '或'B'或其他一些从类A派生出来的类'X',并且还实现了函数'run'(在我的例子中,我的对象是类型'B')。我怎样才能得到函数'run'那是在我的对象的类中实现的?
为什么你需要知道它? – litelite
“run”函数的地址(实际上将被使用)只能在虚拟表中找到,这通常对程序员不可见。你究竟做了什么:你真的需要函数的地址,还是只是寻求确认运行时调度到正确的派生函数? – Xirema
你想要一个函数指针还是地址? – alain