美文网首页C/C++学习笔记
1.0 C++远征:为什么继承

1.0 C++远征:为什么继承

作者: 青_阳 | 来源:发表于2016-11-18 18:26 被阅读9次

    2-1为什么继承

    1.Worker继承自Person,新增方法work()和成员m_iSalary:

    继承1.png
    // 继承
    class Worker : public Person
    {
    public:
        void work();
        int m_iSalary;
    }
    

    2.继承方式

    (1)公有继承

    class A : public B

    Tips:
    可以通过本类中的public下的成员函数访问protected和private中的数据成员;
    不涉及继承的时候protected和private是一样的;
    公有继承的时候,原类中的public放到新类的public中,原类的protected放到新类的protected中,而原类的privat将会放到新类的不可见位置,是禁止访问的;
    在公有继承中:基类的Proteced类似于非继承形式下的private。 可以通过成员函数进行调用Protected中的数据成员。基类中的Private不会继承到派生类的Private下。注意:他继承到了一个隐藏的地方。即派生类不能访问基类的Private。
    
    Table:
    基类成员访问属性 继承方式 派生类成员访问属性
    private成员 public 无法访问
    protected成员 public protected
    public成员 public public

    (2)保护继承

    class A : protectd B

    Tips:
    保护继承的时候,基类中的protected和public都将作为派生类的protected,基类中的private将会在派生类中不可见,无法访问
    
    Table:
    基类成员访问属性 继承方式 派生类成员访问属性
    private成员 protected 无法访问
    protected成员 protected protected
    public成员 protected protected

    (3)私有继承

    class A : private B

    Tips:
    私有继承的时候,基类中的protected和public都将作为派生类的private,基类中的private将会在派生类中不可见,无法访问
    私有继承是has a(是一种包含关系)
    
    Table:
    基类成员访问属性 继承方式 派生类成员访问属性
    private成员 private 无法访问
    protected成员 private private
    public成员 private private

    相关文章

      网友评论

        本文标题:1.0 C++远征:为什么继承

        本文链接:https://www.haomeiwen.com/subject/esqspttx.html