zoukankan      html  css  js  c++  java
  • 继承方式

    public:公有继承

    protected:保护继承

    private:私有继承

    关系:

    不管公有继承 保护 还是私有 基类中的私有属性 ,都不可以继承下去

    公有继承 

     父类中的protected 在子类中是 protected

     父类中的public 在子类中是 public

    保护继承

     父类中的protected 在子类中是 protected

     父类中的public 在子类中是 protected

    私有继承

     父类中的protected 在子类中是 private

     父类中的public 在子类中是 private

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    
    //基类
    class A {
    public:
        int mA;
    protected:
        int mB;
    private:
        int mC;
    };
    
    //1. 公有(public)继承
    class B : public A {
    public:
        void PrintB() {
            cout << mA << endl; //可访问基类public属性
            cout << mB << endl; //可访问基类protected属性
            //cout << mC << endl; //不可访问基类private属性
        }
    };
    class SubB : public B {
        void PrintSubB() {
            cout << mA << endl; //可访问基类public属性
            cout << mB << endl; //可访问基类protected属性
            //cout << mC << endl; //不可访问基类private属性
        }
    };
    void test01() {
    
        B b;
        cout << b.mA << endl; //可访问基类public属性
        //cout << b.mB << endl; //不可访问基类protected属性
        //cout << b.mC << endl; //不可访问基类private属性
    }
    
    //2. 私有(private)继承
    class C : private A {
    public:
        void PrintC() {
            cout << mA << endl; //可访问基类public属性
            cout << mB << endl; //可访问基类protected属性
            //cout << mC << endl; //不可访问基类private属性
        }
    };
    class SubC : public C {
        void PrintSubC() {
            //cout << mA << endl; //不可访问基类public属性
            //cout << mB << endl; //不可访问基类protected属性
            //cout << mC << endl; //不可访问基类private属性
        }
    };
    void test02() {
        C c;
        //cout << c.mA << endl; //不可访问基类public属性
        //cout << c.mB << endl; //不可访问基类protected属性
        //cout << c.mC << endl; //不可访问基类private属性
    }
    //3. 保护(protected)继承
    class D : protected A {
    public:
        void PrintD() {
            cout << mA << endl; //可访问基类public属性
            cout << mB << endl; //可访问基类protected属性
            //cout << mC << endl; //不可访问基类private属性
        }
    };
    class SubD : public D {
        void PrintD() {
            cout << mA << endl; //可访问基类public属性
            cout << mB << endl; //可访问基类protected属性
            //cout << mC << endl; //不可访问基类private属性
        }
    };
    void test03() {
        D d;
        //cout << d.mA << endl; //不可访问基类public属性
        //cout << d.mB << endl; //不可访问基类protected属性
        //cout << d.mC << endl; //不可访问基类private属性
    }
    
    
    int main()
    {
        system("Pause");
        return 0;
    }
  • 相关阅读:
    在不同的浏览器下FORM及它的小伙伴们默认样式的CSS属性值是不全然一致
    思考博客园的机器人攻击,想到我们可能也需要开启iptables
    大数据量的Mysql数据库备份策略
    win7或win2008系统中,出现【已停止工作,联机检查解决方案并关闭该程序,关闭程序】解决方法!
    Mysql的碎片查看与处理
    "个性化空间"性能优化方案设计初步
    假期结束后的工作安排
    GZIP压缩占用CPU大吗?
    媒体云平台
    关于二级缓存的设计思路
  • 原文地址:https://www.cnblogs.com/yifengs/p/15176190.html
Copyright © 2011-2022 走看看