オブジェクト指向プログラミングの------核となるアイデアである:データの抽象化、継承、および動的結合。
、基本クラスと派生クラスを定義します
- 基本クラスを定義します
あなたは、常に機能が実際の操作は該当しない行っても、基底クラスの仮想デストラクタを持つ必要があります。
- メンバ関数と継承
C ++では、基底クラスのメンバ関数は、2つを分離することでなければならない:一つは、所望の機能を覆わ派生クラスの基本クラスであり、一つは基底クラス関数を所望の直接派生クラスを継承しています。かつてのために我々はとしてそれを定義する仮想関数(仮想関数)仮想関数を呼び出すときに我々はポインタや参照を使用する場合、コールがされる動的バインディング。参照またはポインタ結合異なるオブジェクトは、コールは、基本クラスのバージョンのバージョンを実行することができる派生クラスを行うことも可能です。
基本クラスのメンバ関数の前に仮想キー添加動的結合機能を引き起こすが実行され、任意のコンストラクタ外側非静的関数が仮想であることができます。仮想キーワードは、クラス宣言文の内部で発生する可能性があります前に、クラスの外部関数の定義はありません。基底クラスの仮想関数は、関数宣言がある場合、派生クラスは、仮想関数の暗黙的な関数です。
メンバ関数が仮想宣言されていない場合、それは解決プロセスで発生するのではなく、時間をコンパイルして実行します。
- 派生クラスの定義
クラスの派生リスト使用する必要があります派生クラス(クラス派生一覧は)明らかにそれがクラスから継承されることを示しています。クラスの派生リストとして:
クラス Bulk_quote:公共引用{ }
:アクセス指定子役割がである制御派生クラス継承されたメンバーは、基本クラスから派生クラスユーザに表示されます。誘導体が公開されている場合は、基本クラスのパブリックメンバは、派生クラスのインターフェイス部です。派生型のパブリック・オブジェクトは、ベースクラスへの参照またはポインタに結合させることができます。
- 派生クラスの仮想関数
C ++は、派生クラスが明示的にそのメンバ関数の一つが仮想関数を継承カバーするために運命づけすることができます。それはで構成され、後にパラメータリスト、またはにconstキーワードののconstメンバ関数のバック、または参照修飾子のメンバ関数を参照して、後でキーワードを追加オーバーライドを。
することができる基本クラスへのポインタまたは参照派生クラスオブジェクトにベース部に結合され、この変換が呼び出され、ベースクラスに派生クラス(派生-ベース)型変換。
- 派生クラスのコンストラクタ
各メンバークラスは、それ自身の初期化手順を制御し、それはまた、その基部を初期化するために、ベースクラスの派生クラスのコンストラクタを使用しなければなりません。ベース部と、派生クラスのオブジェクト・データ・メンバーの派生オブジェクトは、それらの中にある初期化フェーズコンストラクタ初期化動作が行われます。まず、基本クラスの初期化部分、派生クラスの初期化シーケンスのメンバーの宣言のその後順序。
各クラスは、オブジェクトクラスは、オブジェクトが同様に、基本クラスの派生クラスの一部であっても、クラスのインタフェースを使用しなければならないと対話するために、独自のインタフェースを定義する責任があります。
- 静的メンバの継承
ベース・クラスは、静的メンバを定義する場合、部材を一意に定義されているのみ、システム全体に存在します。カテゴリの数に基本クラスから派生どんなに、それぞれ固有のインスタンスのみの静的メンバーがあります。静的メンバーは、共通の配向制御ルールに従ってください。
- クラスは基本クラスとして使用することができます
クラスは基本クラスとして使用することができ、それはむしろちょうど声明よりも、定義する必要があります。それは、独自のクラスを派生することはできません。
- 承継の発生を防止するために、
クラスは他のクラスがそれを継承したくない場合は、すなわちキーワードは、最終的にクラス名が続きます。
1 クラス最終NoDerived { / * ... * / }
- ベースと派生クラス間のキャスト
私たちは、派生オブジェクトへの参照を基本クラスをポインタ、および結合し、参照に基本クラスを使用して、我々は実際のオブジェクトへの参照やポインタの型を知らない(ポインタがときや)拘束されるものであれば、ベースクラスであってもよいですオブジェクトは、派生クラスのオブジェクトであってもよいです。
- 動的型付け対静的
静的な型は、変数宣言の型または表現型の生成され、コンパイル時、で知られています。ダイナミック型メモリ変数または式は、モデルオブジェクトで表されています。