2012-04-07 15 views
1
例えば

、この1で 、 私は「非常にこのポインタについては理解できないM、* この質問は、オペレータ+過負荷に関するものではありません は、このポインタについてです、とクラス間の関係、"* this pointer"を詳しく教えてもらえますか?

このポインタは何を指していますか?

非常にありがとうございます!それでも

// UGLY CODE, ONLY TO ILLUSTRATE A POINT 
Integer x, y; 
x = (y += 10) + 1; 

としてconst参照を取るオペレータのこの形式を(そのようなコードを書くことができるように

class Integer { 
     int i; 
    public: 
     Integer(int ii): i(ii) { } 
     const Integer operator+(const Integer& rv) const { 
      cout<<"operator+"<<endl; 
     } 

     Integer& 
      operator+=(const Integer& rv) { 
       i += rv.i; 
       return *this; 
     } 

    } 
+1

良いC++プログラミングの本を読んだことはありますか?本の全体が何を提供しているかを数分で説明するのは難しいです。 –

+0

C++で考えると、私はこの本を読んだときに私はしばしば分かりません。それは私の最も疑問がどこから来たのかです。 – user1279988

+1

あなたが把握したい "もの"は何でしょうか?この追加情報は、「これ」についての情報の適切な部分を教えてくれるでしょう。 – dexametason

答えて

3

thisあなたは、クラスAのXという名前のオブジェクトを作成しpointer.IFの特殊なタイプを識別し、クラスAは、非静的メンバ関数fを持っています()。関数x.f()を呼び出すと、f()の本体のキーワードthisにxのアドレスが格納されます。このポインタを宣言したり、割り当てを行うことはできません。 基本的にthisポインタは、すべての非静的メンバー関数呼び出しに対する隠し引数として渡され、すべての非静的関数の本体内のローカル変数として使用できます。

3

operator+=ニーズが(それがインクリメントされた後の)現在のオブジェクトへの参照を返します、参照を返す)はcanonicalフォームとも呼ばれます。

あなたはどこに戻りますか? thisがあります。現在のオブジェクトに対して点のがありますが、ポインタを返すことはできません。だからoperator*とポインタデリファレンスし、結果を返す:

return *this; 
+0

は、 "このポインタ" – user1279988

関連する問題