フレンド関数とフレンドクラスの違い
コンテンツ
フレンド関数とフレンドクラスは、フレンドキーワードを使用してクラスのプライベートメンバーにアクセスするために使用される手法です。フレンド関数とフレンドクラスの一般的な違いは、フレンド関数を使用するとプライベートクラスメンバーにアクセスできるが、フレンドクラスでは、クラスのプライベートメンバーではなくフレンドクラスの名前にのみアクセスできることです。
の フレンド機能 関数またはクラスによって使用されるかどうかは、オブジェクト指向フレームワークに悪影響を与える可能性があります。 カプセル化 反対です オブジェクト指向 パラダイム。これが、フレンド機能を賢く使用する必要がある理由です。 ブレーク その データ隠蔽 コードの。
このフレンド機能はどちらでもありません 可換 そしてまた 推移的。 XはYの友人です。YはXの友人でもあると推測しません。XがYの友人であり、YがZの友人である場合、XがZの友人であることを意味しません。
-
- 比較表
- 定義
- 主な違い
- 結論
比較表
比較の根拠 | フレンド機能 | 友達クラス |
---|---|---|
ベーシック | クラスのプライベートメンバーに非メンバー関数アクセスを許可するためにfriendキーワードとともに使用される関数です。 | これは、別のクラスのプライベートメンバーにアクセスするためにfriendキーワードとともに使用されるクラスです。 |
前方宣言 | 使用する必要があります。 | 必須ではありません。 |
つかいます | フレンド関数は、演算子のオーバーロードのある状況で使用できます。 | 友達クラスは、クラスが別のクラスの上に作成されるときに使用できます。 |
フレンド関数の定義
の フレンド機能 非メンバー関数にアクセスを許可することにより、クラスのプライベートおよび保護されたメンバーにアクセスするために使用されます。このタイプの関数では、宣言時に関数名の前にfriendキーワードが使用されます。フレンド機能に適用される制限条件がいくつかあります。最初の条件は、フレンド関数が子クラスに継承されないことです。 2番目の条件は、ストレージクラス指定子がフレンド関数に存在しない可能性があることです。つまり、静的および外部として宣言できないことを意味します。
friend関数は、クラスの呼び出しオブジェクトでは呼び出されません。フレンド関数の例:グローバル関数、クラスのメンバー関数、関数テンプレートはフレンド関数になります。例の助けを借りてそれを理解しましょう。
#含める 関数が内部メンバーの2つ以上の独立したクラスにアクセスする必要がある場合、フレンド関数が必要です。一方、クラスが別のクラスのメンバーにアクセスする必要がある場合、フレンドクラスが必要です。複数のメンバー関数がその関数のフレンドである必要がある場合、その場合、フレンドクラスを使用することをお勧めします。
結論