class CObject
{
public:
     virtual void Serialize(){cout<<"CObject::Serialize()\n\n";}
};
class CDocument:public CObject
{
public:
    int m_data1;
void func(){cout<<"CDocument::func()"<<endl;
              Serialize();
           };
class CMyDoc:public CDocument
{
public:
     int m_data2;
virtual void Serialize(){cout<<"CMyDoc::Serialize()\n\n";}
};
void main()
{
 CMyDoc mydoc;
((CDocument*)(&mydoc))->func();
}
中的((CDocument*)(&mydoc))->func();语句看不懂啊????????
请懂的高手指教。

解决方案 »

  1.   

    就是调用func()
    但是mydoc不是指针 所以要转化成指针((CDocument*)(&mydoc))就是取mydoc的指针
    应该是这样的
      

  2.   

    CMyDoc mydoc;//定义了MyDoc对象
    &mydoc//取地址
    (CDocument*)//转化为基类指针
    ->func();//调用基类的函数
      

  3.   

    ((CDocument*)(&mydoc))->func();等同于下面的:
    CDocument* pDoc=&myDoc;
    pDoc->func();myDoc.func()与有什么不同呢?前者CMyDoc::Serialize()被调用,后者CObject::Serialize被调用
      

  4.   

    楼上的大哥
    我能不能这样调用这个函数?
    mydoc.func();