0

私の理解では、これが C++ でサブクラス化する唯一の方法です。

class ParentClass {
    ...
}

class ChildClass : public ParentClass {
    ...
}

なぜ「:public」が必要なのですか? 子クラスは常に、親クラスからすべての public および protected 変数とメソッドを継承するだけですか?

代わりにこれを使用できなかった理由がわかりません:

class ChildClass : ParentClass {
4

4 に答える 4

1

必要ありませんが、プライベート継承は is-a 関係を完全に反映していないため (継承のように) コードの匂いがします。

class ChildClass : ParentClass

と同等です

class ChildClass : private ParentClass

ChildClassまた、基本クラスのプライベート メンバーのみを継承するという意味ではなく、そのアクセシビリティを指定されたレベルに制限します。つまり、基本クラスを継承したメソッドは、派生クラスでプライベートになります。

于 2012-09-08T23:08:00.090 に答える
1

そこにない場合publicは、次と同等になります。

class ChildClass : private ParentClass

これは、classs がprivateデフォルトでアクセスできるためです。

また、privateprotectedおよびpublicは call access-specifiersです。これは、継承されるものとは関係ありませんが、派生クラスでアクセスできるものとは関係ありません。

デフォルトpublicの継承が必要な場合は、struct代わりにa を使用します。

struct ChildClass : ParentClass

上記は、s がデフォルトでアクセスできるstruct ChildClass : public ParentClassためと同等です。structpublic

于 2012-09-08T23:11:39.240 に答える
0

C++ では、保護された継承プライベートな継承も許可されています。

クラスのデフォルトはプライベートです。構造体のデフォルトは public です。

于 2012-09-08T23:08:19.273 に答える
0

プライベートで保護された継承を持つこともできます。ここにあるもの

class ChildClass : ParentClass {

プライベート継承になります。

于 2012-09-08T23:08:58.653 に答える