• c++类继承的成员可见性


    1 -- C++继承机制的相关知识点

    继承机制,就是利用已有的数据类型来定义新的数据类型,新数据类型将拥有基类的成员。派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。

    单继承语法:

    class <派生类名称>:<继承方式><基类名>
    {
    //派生类新定义成员
    }; 

    多继承语法:

    class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,......
    {
    //派生类新定义成员
    }; 
    2 -- 继承方式可见性问题

    所谓“可见性”指的是“基类成员对派生类的可见性”(也就是派生类成员函数是否访问基类成员),以及“基类成员对派生类对象的可见性”(也就是派生类对象是否可通过"."运算符访问基类成员)。
    派生类通过继承,将基类的成员作为自己的一部分,但不同的继承方式导致基类的成员在派生类中具有不同的属性。我们首先使用下图表示,基类成员继承后将会在派生类中表现的访问属性:
    cpp_jc
    上图是单继承的方式,也没有涉及派生再次派生的情况。但这两种情况都可以使用该图的逻辑进行推导。就像再次派生的情况,只要将派生类当做基类看待就可以了。

    到这里我们已经知道了基类中的成员在继承类中的属性,那么再通过一个角度详述可见性问题。

    继承方式 public继承 protected继承 private继承
    基类成员属性 public protected private public protected private public protected private
    基类成员对其对象 可见 不可见 不可见 可见 不可见 不可见 可见 不可见 不可见
    基类成员对派生类 可见 可见 不可见 可见 可见 不可见 可见 可见 不可见
    基类成员对派生类对象 可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见
  • 相关阅读:
    c#4.0泛型接口和泛型委托的协变和逆变
    编码解析
    SQL入门(2)
    SQL入门(1)补充
    ADO两种连接方式
    SQL入门(3)
    ADO中SqlCommand的三种执行
    Huffman编码
    IE8单独样式错乱
    从 button列表中获得 commandrgument值
  • 原文地址:https://www.cnblogs.com/motadou/p/1683974.html
Copyright © 2020-2023  润新知