重複の可能性:
C++ で「friend」を使用する必要があるのはいつですか?
ここSOでは、関数/クラスを別のクラスの友達にすることを推奨している人がたくさんいますが、他の選択肢があります。C++ では、friend を控えめに使用するべきではありませんか? フレンド機能の使用を決定する前に、他のオプションを検討する必要があると思います。意見/提案は大歓迎です。
重複の可能性:
C++ で「friend」を使用する必要があるのはいつですか?
ここSOでは、関数/クラスを別のクラスの友達にすることを推奨している人がたくさんいますが、他の選択肢があります。C++ では、friend を控えめに使用するべきではありませんか? フレンド機能の使用を決定する前に、他のオプションを検討する必要があると思います。意見/提案は大歓迎です。
具体的な例がなければ、これを判断するのは困難です。friend
厳密には必要ではありませんが、用途があります。あなたが主張するように、より良い代替手段がある場合は、「より良い」という言葉の単純な定義により、明らかにそれらを使用します。あるいは、どちらのソリューションが優れているかという決定は、結局のところそれほど明確ではないかもしれません。
個人的には、可能な限りそれを避けることを好みますが、メソッドの複製よりも使用することをprint
好みoperator <<
ますfriend
。
フレンド関数は、クラスのメンバーにアクセスする必要があるサードパーティのライブラリ関数を呼び出したい場合に有利です。たとえば、次のことを考慮してください。
class A {
private:
int x,y;
double result;
public:
friend void *power(void *x);
}
これで、このフレンド関数を使用してmath.hにあるpow関数を呼び出すことができます。これで、べき関数は次のように定義できます。
void *power(void *X)
{
A *a;
a = static_cast< A *> (X);
a->result = pow(a->x,a->y);
return NULL;
}
pow関数を呼び出す簡単な方法がありますが、この例は、ライブラリ関数を呼び出す際のフレンド関数の重要性を説明することのみを目的としています。お役に立てば幸いです。