2017-01-25 11 views
-1
LinkedList& LinkedList::operator= (const LinkedList& other) 
{ 
    if(this == &other) 
    { 
     return *this; 
    } 

    /* some other codes if this != &other */ 
} 

コードリターン * このが実行されると、こののアドレスが返されていますか?つまり、値を受け取ったLHSの変数は、と同じアドレスを持つことになります。戻り値の型は参照です - 正確にはどうなりますか?

+1

あなたが言及していないプログラミング言語によって異なります。 – JJJ

答えて

0

=オペレーターの戻り値が=(a,b)の値であると仮定します。 infix表記法でこの演算子を使用する例。

a=b=2; //this is equivalent to a=(b=2); 
print(a); 

このコードスニペットは、B = 2は、それが右側の値を返す実行される(換言すれば、Bの新しい値、左側のように、「2」を返すべき側)に供給され、rhsとしてa=として供給される。

リンクリストの場合、すでにrhsに相当するときはlhs( "this")を返すだけです。おそらく、オペレータに気づいたときにコードを早期に終了させることによるある種の最適化の形態は、実際にはの変更のものではありません。

0

operator *は、従来、それは「型へのポインタ」取り、クラスのインスタンスに、

this

が常にポインタである「型への参照を」戻る署名

MyClass& operator*(MyClass *) 
const MyClass& operator*(const MyClass *) 

を有しますメソッドが実行されていることを確認します。*thisは、そのインスタンスへの参照です。

比較が(this == &other)の場合、thisポインタと比較するにはotherのアドレスを使用しています。

関連する問題