struct
のすべてのアクセス指定子(継承を含む)がである場合、私を保証してもらえますpublic
か?
言い換えれば、それらは等しいですか?
class C: public B, public A { public:
C():A(1),B(2){}
//...
};
と
struct C: B, A {
C():A(1),B(2){}
//...
};
struct
のすべてのアクセス指定子(継承を含む)がである場合、私を保証してもらえますpublic
か?
言い換えれば、それらは等しいですか?
class C: public B, public A { public:
C():A(1),B(2){}
//...
};
と
struct C: B, A {
C():A(1),B(2){}
//...
};
はい、それらはすべて公開されています。
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標準への参照です。
C ++標準、11.2.2、208ページから:
基本クラスのアクセス指定子がない場合、派生クラスがstructとして宣言されると、publicが想定され、クラスがクラスとして宣言されると、privateが想定されます。
そうです、あなたは正しいです。派生クラスがである場合、特に指定しない限り、struct
他のクラスを継承します。public
C ++ 11標準(N3242ドラフト)から
11.2基本クラスと基本クラスメンバーのアクセシビリティ
2基本クラスのアクセス指定子がない場合、派生クラスがクラスキー構造体で定義されている場合はパブリックが想定され、クラスがクラスキークラスで定義されている場合はプライベートが想定されます。