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

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

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

单继承语法:

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

多继承语法:

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

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

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

继承方式 public继承 protected继承 private继承
基类成员属性 public protected private public protected private public protected private
基类成员对其对象 可见 不可见 不可见 可见 不可见 不可见 可见 不可见 不可见
基类成员对派生类 可见 可见 不可见 可见 可见 不可见 可见 可见 不可见
基类成员对派生类对象 可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见
posted @ 2010-03-12 09:31  酱油和醋  阅读(1675)  评论(0编辑  收藏  举报