C ++の継承

継承:生まれ龍、鳳凰生の鶏肉、マウスの息子は穴を作ることができます。


sizeofは、それが基本クラスのすべてのメンバ変数を継承確認することができます

基底クラスのメンバ関数を呼び出すために、サブクラスのオブジェクトと組み合わせた公共の継承は、あなたは、基本クラスのサブクラスのメンバーを取得することができます(すべてのリソースが継承されている。基本クラスのパブリックメンバーサブクラスの権限で公開されています。)

 

書式#include <iostreamの>
 使用して 名前空間はstdを、

クラスベース{     // 父类
公共無効セット(int型 PRI、int型のプロ、int型のパブ){ 
_pri = PRI; 
_pro = プロ。
_pub = パブ; 
} 

ボイドプリント(){ 
COUT << _pri << "  " << _pro << "  " << _pub << ENDL。
} 
INT _pub。
保護int型_pro。
民間のInt _pri; 
}; 

クラス SON1:ベース     @のサブクラス// なし継承
{ 
}; 

クラス Son2:公共の基本     @のサブクラス// パブリック継承
{
 パブリック無効セット(int型 PRIを、int型プロ、int型のパブ){ 

_pri = PRI; // 文が与えられた:サブクラスでプライベートアクセスメンバ変数にアクセスすることができません。

_pro =プロ; // 保護されたアクセス 
_pub = パブ; 
} 

}; 



int型のmain(){ 
COUT <<sizeof(SON1)<<てendl; // メンバ変数を継承することができます。サイズは12です

SON1 Sを、
s.Set(); 
s.Print();     // このエラー、継承のためのための必要

システム(" PAUSE " );
 戻り 0 ; 
}

 


継承:


パブリック、プライベート、保護されました

1.public:すべてのリソースが継承されています。基底クラスのパブリックメンバーで変数サブクラスの権利もあり、公共 ; 基底クラスの保護メンバ変数の中にサブクラス直接およびへのアクセスにアクセスするための保護クラスの外ではなくを、基底クラスのプライベートでのメンバ変数サブクラスはい中の存在が、私は見ることはできません。(子孫が知りたい、他の人はそう保護がアクセスすることができます知っているようにしたくない、プライベートアクセスすることはできません。)
2.protected:基本クラスのパブリックメンバ変数は、サブクラスでパーミッションを変更、ある保護外(アクセスクラス、クラスを;あなたは)アクセスすることはできません、基本クラスの保護のメンバ変数のサブクラスのアクセスがされて保護され、クラスの外ではなく、基本クラスのプライベートはいサブクラスでメンバ変数をそこにあるが、見ることができません
3.private:基本クラスのパブリックメンバ変数であるサブクラスを変更する権限で発生するプライベート(アクセスクラス、クラスは外部アクセスすることはできない);サブクラスアクセスで保護された基底クラスのメンバ変数であります保護クラス外ではなく、基底クラスのプライベートメンバー変数をサブクラスで有り有り存在するが見えません

 

 

 

 

ほぼすべての公共の実用化。(図許可部材は、基本クラスです)

代入互換ルール:

サブクラスのオブジェクトを使用するには、親クラスのオブジェクトとして使用することができます。

サブクラスのオブジェクトは、親オブジェクトに直接割り当てることができます。

サブクラスのオブジェクトは、直接の親クラスのオブジェクトを初期化することができます。

親ポインタは、サブクラスのオブジェクトを直接指し示すことができます。

親クラスは、直接サブクラスオブジェクト参照を参照します。

置換後、派生クラスのオブジェクトは、基本クラスを使用してオブジェクトとして用いることができるが、唯一の基本クラスのメンバから継承を使用することができます。

サブクラスは、特別な親クラスです。メンバ変数と同じ名前のメンバ関数は、スコープ解決演算子により区別されます。

文の決定、アクセスすることができます。

呼び出し文で1ルック、内部のサブクラスに書かれたこれらの言葉、外部

2. 探すためにどのようにサブクラスは親クラスから継承する(パブリック、プライベート、保護されました)     

3.アクセスレベルを参照してください(パブリック、プライベート、保護された)親クラスに
適切文のメンバーのために公共の、保護およびプライベートアクセスレベルを使用する方法:

1.公衆への直接アクセス外の世界のメンバーである必要があります
唯一の現在のクラスのメンバーへの専用アクセスに設定すること2.
3人のメンバーはメディアだけのメンバーを保護し、アクセス保護に現在のクラスとサブクラスのアクセスに設定することができます公共と民間の間。


一般的には国民と。


 

 

継承コンストラクタとデストラクタ:

親クラスのメンバを初期化するには?コンストラクタ親クラスとサブクラスの関係は何ですか?

サブクラスのオブジェクトの構築においては、親クラスのコンストラクタは、そのメンバーが継承されてくる初期化呼び出す必要があり
、オブジェクトの破壊のサブクラスでは部材2を、その親クラスのデストラクタを呼び出す必要が白状継承しました


デストラクタコール継承の構成原理
まずスーパークラスのコンストラクタを呼び出すサブクラスオブジェクトを作成する場合
、親クラスのコンストラクタコンストラクタを実行した後2.実行サブクラス
3.親クラスのコンストラクタのパラメータがあります、コール初期化サブクラスの一覧を表示する必要が
反対を4デストラクタは、コンストラクタと秩序を呼び出します


多重継承:
クラスの継承関係即時基底クラスの複数の多重継承と呼ばれています。

フォーマット:クラスの派生クラス名:基本クラスのアクセスコントロールの名前、アクセス制御、基底クラス名2、...、nはアクセス制御ベースクラス名

 

多重継承と派生クラスのコンストラクタにアクセスします。

1.基底クラスの派生クラスのコンストラクタの複数の基本クラスのコンストラクタは、データ・メンバー初期化初期の呼であってもよい
単一継承コンストラクタ2同様の状況の実行の順序を。基底クラスのコンストラクタ直接実行シーケンスの複数の派生クラスに依存する場合に指定された基底クラスの継承の順序。
3. A派生クラスのオブジェクトは、直接的または間接的に、複数の基底クラスのメンバーを有します。異なるメンバーのアクセスあいまいさは発生しません。基底クラスと同じ名前の異なるメンバー場合は、派生クラスのオブジェクトは、アクセスのために特定されなければなりません。


仮想継承:
派生クラスは、複数の基底クラス、基底クラスの名前に由来している場合は、共通の基底クラスがアクセスに、基本クラスで宣言されている必要があり、それが曖昧生じることがあります。

 

友達機能:
1.友人関数は、クラスのメンバ関数ではない継承することができない、
2友人関係が可換、一方向ではなく、BクラスはフレンドクラスAである場合、クラスAはBであることは必ずしもありませんクラス友人
クラスBがクラスAの友人である場合3.友人関係は、転送できない、クラスCは友人クラスBであり、クラスC必ずしもメタクラスは、友人Aであります


フレンド機能注:

1.プライベートメンバ関数のメンバーは、クラスのフレンド関数ではなく、クラスにアクセスすることができます; 
2. constの友人の機能を変更することはできません。 
3.フレンド関数は、クラス宣言内の任意の場所に定義することができ、クラスのアクセス制限修飾子なし;
4クラスのフレンド関数の複数の関数であってもよく、 
同じ原理が呼び出し、通常の関数コール5フレンド機能; 
6友情が継承されていない、基本クラスは、派生クラスのメンバーの友達ではありません特殊なアクセス。ベースクラスは、特別なアクセス権を持つ友人関係、唯一の基本クラスを授与された場合。派生クラスの基底クラスはクラスに付与友情にアクセスすることはできません。

クラスベース
{ 
友人のボイド楽しいです();
公共
ベース(INT A = 0INT = B 0INT C = 0 
:_pub(A)
、_pro(B)
、_pri(C)
{} 
INT _pub = 1 保護int型 _pro = 2 ;
プライベートint型 _pri = 3 ; 
}。
クラス派生:公共基本
{}。
int型のmain()
{ 
D1を導出。
d1.fun(); 
リターン 0 ; 
}


結果が与えられます。関数fun機能は、派生クラスのメンバーではない、友人の機能を継承することができない説明。

 

おすすめ

転載: www.cnblogs.com/lonelyprince7/p/11668322.html
おすすめ