关于虚函数的问题
请看下面的代码:
class CObject
{
public :
int m_data1;
virtual void Serialize(){cout<< "CObject::Serialize()\n\n")};
}
class CDocument : public CObject
{
public :
int m_data2;
void func(){cout<<"CDoument::func()"<<endl;
Serialize();}
virtual void Serialize(){cout<<"CDocument::Serialize()\n\n");
}
class CMyDoc : public CDocument
{
public :
int m_data3;
virtual void Serialize(){cout<<"CMyDoc::Serialize()\n\n");}
}
void main()
{
CMyDoc mydoc;
CMyDox *pmydoc = new CMyDoc;
cout<<"#1 testing"<<endl;
mydoc.func();
((CDocument *)(&mydoc))->func();
}
为什么在((CDocument *)(&mydoc))->func()里输出的是
CMyDoc::Serialize(),而不是CDocument::Serialize?
不是已经做了强制转化了吗?这是时候虚函数表里的指针应该指向
CDocument 类里面的Serialize()了吗?请大虾指教