基本クラスのメンバー変数は派生クラスのコンストラクターでどのように初期化されるべきですか?
派生クラス コンストラクターの基本クラス メンバー変数の初期化
オブジェクト指向プログラミングでは、継承により派生クラスがプロパティと動作を継承できるようになります。基本クラス。ただし、派生クラス コンストラクター内で基本クラスのメンバー変数を初期化すると、問題が発生する場合があります。
なぜ派生クラス コンストラクターで基本クラスのメンバー変数を初期化できないのですか?
次の例を考えてみましょう:
class A { public: int a, b; }; class B : public A { B() : A(), a(0), b(0) { } };
このコードでは、クラス B がベースを初期化しようとします。構文 A()、a(0)、b(0) を使用して、クラス メンバー変数 a および b を独自のコンストラクター内で使用します。ただし、このアプローチは間違っています。その理由は、a と b はクラス B のメンバーではなく、クラス A のメンバーであるためです。これらの変数を直接初期化できるのはクラス A だけです。
初期化のベスト プラクティス
この問題に対処するために、推奨されるアプローチがいくつかあります。
- 基本クラスのメンバーを作成するPublic: 1 つのアプローチは、以下に示すように、基本クラスのメンバー変数をパブリックにすることです。
class A { public: int a, b; }; class B : public A { B() : a(0), b(0) { } };
ただし、メンバー変数をパブリックにすることは、原則に違反するためお勧めできません。カプセル化とセキュリティ。
- の基本クラス コンストラクターを作成します。初期化: より安全で推奨されるアプローチは、派生クラスが基本クラスのメンバー変数を初期化できるようにするコンストラクターを基本クラスに作成することです。例:
class A { protected: A(int a, int b) : a(a), b(b) {} // Accessible to derived classes private: int a, b; // Keep these variables private in A }; class B : public A { public: B() : A(0, 0) // Calls A's constructor, initializing a and b in A to 0. { } };
このアプローチにより、派生クラスは、必要な初期値を使用して基本クラスのコンストラクターを呼び出すことで、基本クラスのメンバー変数を初期化できます。
以上が基本クラスのメンバー変数は派生クラスのコンストラクターでどのように初期化されるべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?
