• 【面试刷题】——C++公有继承保护继承和私有继承


    在C++中,有三种继承方式:公有继承(public inheritance)、保护继承(protected inheritance)和私有继承(private inheritance)。这些继承方式决定了派生类如何继承基类的成员和访问权限。

    公有继承(public inheritance):

    公有继承是最常见的继承方式。
    派生类继承了基类的公有成员和保护成员作为它自己的公有和保护成员,但不继承基类的私有成员。
    公有继承中,基类的公有成员在派生类中仍然是公有的,可以通过派生类的对象访问。
    基类的保护成员在派生类中变成了保护的,只能在派生类内部或者派生类的友元函数中访问。

    class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
    };
    
    class Derived : public Base {
        // publicMember在Derived中仍然是公有的
        // protectedMember在Derived中变成了保护的
        // privateMember在Derived中无法访问
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    保护继承(protected inheritance):

    保护继承继承了基类的公有和保护成员作为它自己的保护成员,但不继承基类的私有成员。
    在保护继承中,基类的公有成员在派生类中变成了保护的,只能在派生类内部或者派生类的友元函数中访问。
    基类的保护成员也在派生类中变成了保护的。

    class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
    };
    
    class Derived : protected Base {
        // publicMember在Derived中变成了保护的
        // protectedMember在Derived中也是保护的
        // privateMember在Derived中无法访问
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    私有继承(private inheritance):

    私有继承继承了基类的公有和保护成员作为它自己的私有成员,但不继承基类的私有成员。
    在私有继承中,基类的所有成员在派生类中都变成了私有的,只能在派生类内部访问,不能在外部访问。

    class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
    };
    
    class Derived : private Base {
        // publicMember在Derived中变成了私有的
        // protectedMember在Derived中也是私有的
        // privateMember在Derived中无法访问
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    【笔记篇】07基础数据中心——之《实战供应链》
    Linux 文件特殊权限和ACL权限设置
    AutoSAR基础:Port与Dio
    方块栈问题
    SpirngBoot+微服务SpringCloud——Eureka服务的注册(二)
    模拟赛题解9.13
    c++数据结构:平衡二叉树(概念)
    FPGA实现直流电机驱动(速度位置控制)
    SaaS企业如何构建与自身增长相匹配的渠道力
    NBlog Java定时任务-备份MySQL数据
  • 原文地址:https://blog.csdn.net/weixin_55799469/article/details/132928029