【C++】C++学習ノートその5:友元
1261 ワード
クラスには、C++クラスの友元関数と呼ばれる関数宣言にfriendキーワードを付ける関数宣言方式があります.
1.友元の役割——パッケージ性を破壊する
友元関数は、友人のように、クラスのプライベートメンバー関数とクラスのプライベートデータメンバーを自由に呼び出すことができます.クラスのパッケージング性をある程度破壊し、友元の使用をできるだけ減らすことをお勧めしますが、コードを簡略化し、効率を最適化できる場合があります.
友元演算子+=リロードを使用しない場合は、次のようになります.
2.同じclassの各objectは互いに友元である
この重要な性質は、次のコードで示すことができます.
次のように呼び出されます.
1.友元の役割——パッケージ性を破壊する
友元関数は、友人のように、クラスのプライベートメンバー関数とクラスのプライベートデータメンバーを自由に呼び出すことができます.クラスのパッケージング性をある程度破壊し、友元の使用をできるだけ減らすことをお勧めしますが、コードを簡略化し、効率を最適化できる場合があります.
class complex{
private:
friend complex& operator+=(complex & l, const complex & r);
};
complex& operator+=(complex& l, const complex & r){
l.re += r.re; // complex
l.im += r.im; //
return l;
}
友元演算子+=リロードを使用しない場合は、次のようになります.
complex operator+=( complex& l, const complex & r ){
double re = l.real() + r.real(); // ,
double im = l.imag() + r.imag();
return complex(re,im); // , ,
}
2.同じclassの各objectは互いに友元である
この重要な性質は、次のコードで示すことができます.
class complex{
……
public:
//
int function(const complex& param){
return param.re + param.im;
}
};
次のように呼び出されます.
{
complex c1(2,1);
complex c2; // class object , c2 function c1
cout << c2.function(c1) << endl;
}