/*
 Test ONE:
CDocument::func()
CMyDoc::Serialize()
Test TWO:
CDocument::func()
CMyDoc::Serialize()
Test Three:
CDocument::func()
CMyDoc::Serialize()
Test Four:
CDocument::func()
CDocument::Serialize()   
 
*/
#include <iostream>
using namespace std;

class CObject
{
public:
    virtual void Serialize(){ cout << "CObject::Serialize() \n"; }
};

class CDocument : public CObject
{
public:
    int m_data1;
    void func(){
        cout << "CDocument::func()" << endl;
        Serialize();
    }
    void Serialize(){ cout << "CDocument::Serialize() \n"; }
};

class CMyDoc : public CDocument
{
public:
    int m_data2;
    virtual void Serialize(){ cout << "CMyDoc::Serialize()" << endl; }
};

void main()
{
    CMyDoc mydoc;//感觉这仅仅是一个声明,为什么居然能呼叫函数
    CMyDoc* pDoc = new CMyDoc; //这里()可有可无

    cout << "Test ONE:" << endl;
    mydoc.func();

    cout << "Test TWO:" << endl;
    ((CDocument*) &mydoc)->func();

    cout <<"Test Three:" << endl;
    pDoc->func();

    cout << "Test Four:" << endl;
    ((CDocument) mydoc).func();

    system("pause");
}

相关文章:

  • 2021-12-15
  • 2021-10-27
  • 2022-12-23
  • 2022-12-23
  • 2021-09-08
  • 2022-12-23
猜你喜欢
  • 2022-03-03
  • 2022-12-23
  • 2021-12-18
  • 2021-06-30
  • 2022-12-23
  • 2021-11-02
相关资源
相似解决方案