【发布时间】:2017-08-15 19:53:32
【问题描述】:
例如我有:
class A{
public:
virtual void run(){...}
};
class B:public A {
public: void run(){...}
};
A* ptr= new B();
我只有一个指针'ptr'。我知道指针是'A*'类型,但我不知道它是指向'A'或'B'类的对象还是其他'X'类的对象' 它派生自 A 类并且还实现了函数 'run'(在我的示例中,我的对象是类型 'B')。我怎样才能获得在我的对象的类中实现的函数 'run' 的地址?
【问题讨论】:
-
你为什么需要知道它?
-
run函数的(实际使用的)地址只能在虚拟表中找到,通常程序员看不到。您究竟想通过这样做来完成什么:您真的需要函数的地址,还是只是在寻找对正确派生函数的运行时分派的确认? -
你想要函数指针还是地址?
-
我在找地址。或者问是否真的可以做。
-
@nikjov 您直接尝试做的事情无法完成。根据您的情况,可以完成类似的、切题的事情,但是您需要解释这种代码的用例,因为没有它,就不可能给您有用的答案.
标签: c++ function polymorphism virtual