C ++中类名的Access Modifier

时间:2017-09-25 18:04:13

标签: c++ inheritance

我在查看http://www.geeksforgeeks.org/inheritance-in-c/中的继承概念。我对作者写的几句话很困惑。在一个地方作者说

  

如果我们从公共基类派生一个子类。然后公众   基类的成员将在派生类中公开.......

这意味着我们在C ++中有类似公共类的东西吗?文章下面的表格也表明有一个公共/受保护类的概念。 enter image description here

我查看了其他一些SO帖子(Use of "Public" in a derived class declaration?),但未发现对Public,Private或受保护类本身的引用。帖子https://stackoverflow.com/questions/4792614/making-classes-public-to-other-classes-in-c是公开的,但是通过头文件。

1 个答案:

答案 0 :(得分:6)

PublicProtectedPrivate关键字是C++中的可见性标签。 public中没有protectedprivatec++类类型(如Java)。这三个关键字也用于完全不同的上下文中,以指定可见性继承模型。

下面给出的表列出了组件声明和继承模型的所有可能组合,它们表示在完全定义子类时对组件的结果访问。

enter image description here

它以下列方式读取(看一下第一行):

  

如果组件声明为public且其类继承为   公开所产生的访问权限是公开的。

看一下下面的例子:

class Super {
    private:     int x;
    protected:   int y;
    public:      int z;
 };
class Sub : protected Super {};

对类Sub中的变量y,z的结果访问受到保护,对于变量x则为无。

注意:

缺少修饰符会产生private