zoukankan      html  css  js  c++  java
  • c++ 基类,派生类的类型兼容性

    #include <iostream>
    using namespace std;
    class CFather
    {
    public:
        void display() const { cout<<"CFather::display()"<<endl;}
    };
    class CSon:public CFather
    {
    public:
        void display() const { cout<<"CSon::display()"<<endl;}
    };
    class CGrandSon:public CSon
    {
    public:
        void display() const { cout<<"CGrandSon::display()"<<endl;}
    };
    void show(CFather *ptr)
    {
        ptr->display();
    }
    void showson(CSon *ptr)
    {
        ptr->display();
    }
    int main()
    {
        CFather father;
        CSon son;
        CGrandSon grandson;
        show(&father);
        show(&son);
        show(&grandson);
        showson(&grandson);
    
        getchar();
        return 0;
    
    }

    输出结果:

    类型兼容原则:可以将派生类对象的地址赋值给基类

    结论:但是通过这个基类类型的指针,却只能访问到从基类继承的成员。

    作用效果:基类对象出现的场合作用派生类对象进行替代后,派生类仅仅发挥出基类的作用。

    下面改一下代码,访问数据成员:
    #include <iostream>
    using namespace std;
    class CFather
    {
    public:
        CFather():iTest(100){}//构造函数成员初始化
        void display() const { cout<<"CFather::display()"<<iTest<<endl;}//包含iTest
        int iTest;
    };
    class CSon:public CFather
    {
    public:
        void display() const { cout<<"CSon::display()"<<iTest<<endl;}////包含iTest
    };
    class CGrandSon:public CSon
    {
    public:
        void display() const { cout<<"CGrandSon::display()"<<iTest<<endl;}////包含iTest
    };
    void show(CFather *ptr)
    {
        ptr->display();
    }
    void showson(CSon *ptr)
    {
        ptr->display();
    }
    int main()
    {
        CFather father;
        CSon son;
        CGrandSon grandson;
        show(&father);//
        show(&son);//
        show(&grandson);//
        showson(&grandson);//
    
        getchar();
        return 0;
    
    }

    结果:

  • 相关阅读:
    C1FlexGrid双grid滚动条联动
    linux实用命令
    大数据学习1(linux环境搭建)
    一个数据开发工程师要知道的名词
    oracle快速向表插入大量数据
    读书笔记--(索引的扫描方式)
    SQL优化策略(数据仓库)
    oracle大表删除数据方案
    加密与解密
    Spring笔记之IOC
  • 原文地址:https://www.cnblogs.com/liunnis/p/4463054.html
Copyright © 2011-2022 走看看