私の質問は、基本クラスのコンストラクターから仮想メンバー関数を呼び出すことではなく、仮想メンバー関数へのポインターが基本クラスのコンストラクターで有効かどうかです。
以下を考えると
class A
{
void (A::*m_pMember)();
public:
A() :
m_pMember(&A::vmember)
{
}
virtual void vmember()
{
printf("In A::vmember()\n");
}
void test()
{
(this->*m_pMember)();
}
};
class B : public A
{
public:
virtual void vmember()
{
printf("In B::vmember()\n");
}
};
int main()
{
B b;
b.test();
return 0;
}
これにより、準拠しているすべての C++ コンパイラに対して "In B::vmember()" が生成されますか?