C++プログラミング思想ノート--隠し実現

1075 ワード

友元:
プログラマが現在の構造に属していないメンバー関数のアクセス構造のデータを許可したい場合は、クラスでこの関数を友元として宣言できます.友元は子が必要だとクラスに宣言した.
ネストされた友元
ネストされたstructは、プライベートメンバーへのアクセス権限を自動的に取得することはできません.プライベートメンバーへのアクセス権限を取得するには、ネストされたstructを宣言し、グローバル範囲で使用される友元であることを宣言します.友元は一部のC++の突発的な問題を解決するために用いられ,C++が純粋なオブジェクト向けの言語ではないことも説明した.
オブジェクトレイアウト
アクセス指定子の使用を開始すると(public protect private)では、C++の世界に完全に進出しています.特定のアクセスブロックでは、これらの変数はメモリに隣接しているに違いありませんが、アクセスブロック自体は定義された順序でオブジェクトに現れないことができます.一部のマシンの構造や動作環境では、プライベートメンバーや保護メンバーを明確にサポートし、特定の位置に配置することができます.で行ないます.アクセス指定情報は、通常、コンパイル中に消失します.プログラムの実行中に、オブジェクトはストレージ領域をプログラミングします.一般的に,プログラマがプログラムを書く場合,特定の実装に依存するものは何も適切ではない.
ハンドルクラス
ハンドルクラスを使用する動機:
1.表示される実装部分
一部のプロジェクトでは、エンドユーザーにヘッダファイルの情報などの実装部分を表示させることはできません.ヘッダファイルに露出するのではなく、コンパイルされた実際の構造を実装ファイルに配置する必要があります.
2.重複コンパイルの削減
class handle
{
    struct cheshire;
    cheshire* smile;
public:
    void initialize();
    void cleanup();
    int read();
    void change(int);
}
cheshire構造は、実装ファイルに本体が隠されている具体的な実装を含む(cheshireのインタフェースはhandleクラスで露出するが、クラス定義のヘッダファイルは露出せず、プライベート情報を保護する)