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;
    }
  • 相关阅读:
    css 基线与行高
    requests超时
    小记--------Ambari2.7.4集成Kylin3.0
    记一次--------HDP3.1 spark创建表hive读不到,hive创建表spark读不到
    记一次-------- sqoop同步mysql到hive 执行太慢
    记一次--------hive创建表comment中文乱码解决
    .Net Core学习之路-跳坑(一)
    NGINX、HAProxy和Traefik负载均衡能力对比
    idea 一键启动多个微服务项目
    vuedraggable自由拖拽
  • 原文地址:https://www.cnblogs.com/yifengs/p/15176190.html
Copyright © 2011-2022 走看看