仮想と宣言されたクラスメンバ関数への関数ポインタは有効でしょうか?仮想関数へのポインタは依然として仮想的に呼び出されますか?
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
と呼びますか?
コードがあります。これは、コードを実行するだけであなたが答えることができる質問の1つです。 –
IDEよりも早く起動してプロジェクトやコード、コンパイル、デバッグなどを作成するよりも速いので、他の人にもメリットがあり、この質問/コードは失われません。 – uray
@Martin:動作が未定義の場合はどうなりますか? –