【C++】C++学習ノートその5:友元

1261 ワード

クラスには、C++クラスの友元関数と呼ばれる関数宣言にfriendキーワードを付ける関数宣言方式があります.
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;
}