【发布时间】:2010-11-19 18:51:27
【问题描述】:
指向声明为虚拟的类成员函数的函数指针是否有效?
class A {
public:
virtual void function(int param){ ... };
}
class B : public A {
virtual void function(int param){ ... };
}
//impl :
B b;
A* a = (A*)&b;
typedef void (A::*FP)(int param);
FP funcPtr = &A::function;
(a->*(funcPtr))(1234);
B::function 会被调用吗?
【问题讨论】:
-
你有密码。这是您可以通过运行代码自己回答的问题之一。
-
因为在这里询问比启动 IDE、创建项目、代码、编译、调试等更快...而且它会给其他人带来好处,而且这个问题/代码不会丢失.
-
@Martin:如果行为未定义怎么办?
标签: c++ function virtual function-pointers