データのカプセル化

パッケージは、とてもそれによって安全性を確保すること、外部干渉及び誤用を避けるために、オブジェクト指向プログラミング操作データと一緒に結合機能データの概念です。データのカプセル化は、もう一つの重要なOOPの概念を出て、すなわち、データ隠蔽

データのカプセル化は、一緒にバンドルデータ及び操作データを機能させる機構であるデータ抽象化がユーザに対するインターフェースであり、機構の実装の詳細を非表示にのみ露出されています。

 

デザイン戦略

私たちは本当に公開する必要がない限り、良いことを確認するために、通常の状況下で、我々は、民間(プライベート)にクラスのメンバの状態を設定しますカプセル化

これは通常、データメンバーに適用されますが、それはまた、仮想関数を含むすべてのメンバーに適用されます。

 

 

(復刻版)

 

C ++での仮想関数プライベートであってもよく、(転送仮想関数テーブルから)サブクラスによってオーバーライドすることができるが、親クラスのプライベート仮想サブクラスを呼び出すことはできません。オーバーロードされた仮想関数とその文の権限は何の関係もありません。

メンバ関数のみを訪問する現在のクラスの機能(またはフレンド関数)の他のメンバーをマークすることができ、私有財産として定義されます。virtual修飾子は、親クラスのメンバ関数は、サブクラスでオーバーライドすることができます強調します

書き換え時に親クラスでの呼び出し関係が起こらなかったので、書き換えは、したがって、許可されています。

コンパイラは、仮想関数の様々なタイプのプロパティをチェックしません。変更された仮想メンバ関数は、彼らがプライベートであるかどうか、保護したり、公共の、統一された仮想関数テーブルに置かれます。親クラスが派生されます

、サブクラスのvtableが同じオフセットアドレスを持つ継承(オフセットアドレスは同じを参照して、仮想関数ポインタVPTRの各々に対してオフセット)、サブクラスは、これらの仮想関数を再ロードすることを許可されます。

それは、このようなパブリックとして、関数定義を過負荷にし、過負荷に新しいプロパティを与えることができ、それが唯一の公共のためのサブクラスでオーバーロードされた関数へのアクセスのプロパティをマークし、親クラスの私有財産は何の関係もありません!

純粋仮想関数は、このサブクラス純粋仮想関数カバレッジの唯一の義務、それを直接呼び出す、それが正しいコールではなかった民間なるように設計することができるが、これは、このクラスの外で非フレンド関数を許可していません。

おすすめ

転載: www.cnblogs.com/webcyh/p/11293827.html