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;
    }
  • 相关阅读:
    Apache JMeter 入门教程
    nacos 配置中心 & 服务发现 使用
    Apache Flink能用来做什么?
    使用etcd watch做服务发现
    服务的注册与发现(Consul、zookeeper、etcd、eureka、Nacos)
    四层、七层负载均衡的区别
    Apollo核心概念之“Namespace”
    Charles的原理、作用
    GIN框架中间件 C.NEXT() C.ABORT() C.SET() C.GET 跨中间件取值 GIN中间件中使用GOROUTINE
    gin内置验证器使用
  • 原文地址:https://www.cnblogs.com/yifengs/p/15176190.html
Copyright © 2011-2022 走看看