默认继承访问说明符

Sim*_*ity 53 c++ inheritance

如果我有例如两个类AB,这样的类B继承A,如下所示:

class B: public A

在这种情况下,我正在做public继承.

如果我按如下方式编写前面的代码:

class B: A

我将在这里做什么类型的继承(即公共)?换句话说,什么是默认访问说明符?

这里只是一个问题.我是否拨打上一行代码statements?特别是我记得我在C++中读到了没有恐惧:一本初学者的指南,让你觉得这本书就是statements最好的;.你觉得怎么样?

谢谢.

ana*_*lyg 89

只是对所有现有答案的一小部分:继承的默认类型取决于继承类型(B),而不是继承的类型(A).例如:

class A {};
struct B: /* public */ A {};
Run Code Online (Sandbox Code Playgroud)


ybu*_*ill 22

它对于类是私有的,对于struct是公共的.

答案:不,这些是根据标准对班级的定义.


小智 7

当您从另一个类继承一个类时(在本例中为继承class Baseclass Derived),则默认访问说明符为private

#include <stdio.h>

class Base {
public:
int x;
};

class Derived : Base { }; // is equilalent to class Derived : private Base       {}

int main()
{
 Derived d;
 d.x = 20; // compiler error becuase inheritance is private
 getchar();
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

当您从结构继承类时(在本例中为继承class Basestruct Derived),则默认访问说明符为public

#include < stdio.h >
  class Base {
    public:
      int x;
  };

struct Derived: Base {}; // is equilalent to struct Derived : public Base {}

int main() {
  Derived d;
  d.x = 20; // works fine becuase inheritance is public
  getchar();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)