zoukankan      html  css  js  c++  java
  • 对象切割 ObjectSlicing

    /*
     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");
    }
  • 相关阅读:
    [LeetCode] Sort Colors
    [LeetCode] Trapping Rain Water
    [LeetCode] Sudoku Solver
    [LeetCode] Valid Sudoku
    [LeetCode] Candy
    [LeetCode] Permutation Sequence
    [名词解释]Constant Amortized Time
    回溯法 子集树和排序树
    HDU 4859 海岸线 最小割
    敏捷开发一千零一问:怎样处理重要但不明白的任务?
  • 原文地址:https://www.cnblogs.com/flaaash/p/1895118.html
Copyright © 2011-2022 走看看