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");
    }
  • 相关阅读:
    CentOS7 命令笔记
    MarkDown学习
    系统管理员资源大全
    解决回车键导致的页面无意义刷新
    Tomcat远程调试
    gson 自定义对象转换格式
    maven私服搭建
    大明最不该被遗忘的英烈——李定国
    HashMap实现原理分析(转)
    自定义评分器Similarity,提高搜索体验(转)
  • 原文地址:https://www.cnblogs.com/flaaash/p/1895118.html
Copyright © 2011-2022 走看看