2011-10-07 86 views
3

有人可以向我解釋(*this)指針,並演示如何使用它作爲調用同一類的另一個對象的對象。我不明白的是如何在同一個變量名的不同對象的成員函數中引用兩個數字。例如,乘以兩個數字。調用對象的對象

a.Multiply(b); 
//.... 
Numbers::Numbers Multiply(Numbers auggend) 
{ 
} 

回答

5
this pointer: 

每個對象的成員函數可以訪問一個名爲this指針,它指向itself.When我們調用成員對象函數,它的值爲this,它被設置爲被調用對象的地址。使用this指針,任何成員函數都可以找出它所屬的對象的地址。它也可以是用於訪問它指向的對象中的數據。例如:類實例的

void setdata(int ii) 
{ 
    i=ii;   // one way to set data 
    this->i=ii; // another way to set data 
} 
+0

+1的答案 – desprado

0

(* this)是一個指向你類的instatniation的指針。在您的例子,如果數字類有一個數據值「值」:

a.Multiply(b); 
.... 
Numbers::Numbers Multiply(Numbers auggend) 
{ 
    return (this->value) * (auggend.value); 
} 
+0

注意,'返回值* auggend.value '也是正確的 – Simon

+0

so(this-> value),指向對象「a」和「(auggend.value)」中的「value」變量;「是指乘法參數中的「值」變量? – user954004

+0

確實如此。 (this * - > * value)vs(auggend *。* value)的原因留給讀者練習;-)。 – whitey04

3

this pointer存儲地址,可用於初始化值

0

首先,你的例子看起來不正確的。我認爲應該是:

Numbers Numbers::Multiply(Numbers auggend) 
{ 
} 

不管怎麼說,隨着中說,this簡直是Numbers * const類型的變量指向你的成員變量。所以從你的例子a.Multiply(b),this將保持值爲&a

比方說,你有這樣的花了Numbers *一些其他的功能:

void DoSomething(Numbers *num); 

然後,您可以調用該函數與this

Numbers Numbers::Multiple(Numbers auggend) 
{ 
    DoSomething(this); 
    DoSomething(&auggend); 
} 
0
class A{ 
    int num; 
    void foo(int num) 
    { 
     num = 10; //local variable num is set to 10 
     this->num = 10 ; //class member num is set to 10 
    } 
};