フレンド関数の代替手段は次のとおりです。 クラス メソッドのカプセル化: クラスのプライベート部分でメソッドを定義し、それらをフレンド関数として公開して、カプセル化を維持し、プライベート メンバーへの外部アクセスを許可します。ブリッジ モード: ブリッジ クラスを使用してターゲット クラスへのポインターを含め、それにフレンド関数を追加してターゲット クラスのメソッドを委任します。テンプレート メタプログラミング: テンプレート メタプログラミングを使用してコンパイル時にクラス メンバーを操作し、プライベート メンバーへのアクセスを許可します。
フレンド関数は、他のクラスのプライベート メンバーにアクセスできる特別なタイプの関数です。フレンド機能は便利ですが、カプセル化も破壊します。したがって、クラスを設計する際には、フレンド関数はできるだけ使用しないようにするのが最善です。
次に、フレンド関数の代替手段をいくつか示します。
クラス メソッドのカプセル化:
クラスのプライベート部分でメソッドを定義し、それをカプセル化します。フレンド機能として公開しました。これにより、カプセル化が維持されながら、外部関数がプライベート メンバーにアクセスできるようになります。
ブリッジ モードの使用:
宛先クラスへのポインターを含むブリッジ クラスを作成します。ブリッジ クラスにフレンド関数を追加し、ターゲット クラスのメソッドをフレンド関数に委任します。
テンプレート メタプログラミングの使用:
テンプレート メタプログラミングを使用して、コンパイル時にクラス メンバーを操作します。このメソッドはより複雑ですが、実行時にプライベート メンバーにアクセスできます。
実際的なケース:
プライベートメンバーが name
と age # である
person クラスがあるとします。 ##。
person 情報を出力するには、
printInfo 関数を定義する必要があります。
rree
以上がフレンド機能の代わりになるものは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。