5

structのすべてのアクセス指定子(継承を含む)がである場合、私を保証してもらえますpublicか?

言い換えれば、それらは等しいですか?

class C: public B, public A { public:
    C():A(1),B(2){}
    //...
};

struct C: B, A {
    C():A(1),B(2){}
    //...
};
4

3 に答える 3

7

はい、それらはすべて公開されています。

struct A : B {
  C c;
  void foo() const {}
}

と同等です

struct A : public B {
 public:
  C c;
  void foo() const {}
}

メンバーの場合、§11で指定されています。

キーワードclassで定義されたクラスのメンバーは、デフォルトでプライベートです。キーワードstructまたはunionで定義されたクラスのメンバーは、デフォルトでパブリックです。

§11.2の基本クラスの場合:

基本クラスのアクセス指定子がない場合、派生クラスがクラスキー構造体で定義されている場合はパブリックが想定され、クラスがクラスキークラスで定義されている場合はプライベートが想定されます。

ここで、参照はC++11標準への参照です。

于 2012-06-07T10:37:36.157 に答える
2

C ++標準、11.2.2、208ページから:

基本クラスのアクセス指定子がない場合、派生クラスがstructとして宣言されると、publicが想定され、クラスがクラスとして宣言されると、privateが想定されます。

そうです、あなたは正しいです。派生クラスがである場合、特に指定しない限り、struct他のクラスを継承します。public

于 2012-06-07T10:44:37.237 に答える
2

C ++ 11標準(N3242ドラフト)から

11.2基本クラスと基本クラスメンバーのアクセシビリティ

2基本クラスのアクセス指定子がない場合、派生クラスがクラスキー構造体で定義されている場合はパブリックが想定され、クラスがクラスキークラスで定義されている場合はプライベートが想定されます。

于 2012-06-07T10:45:02.247 に答える