有人可以向我解釋(*this)
指針,並演示如何使用它作爲調用同一類的另一個對象的對象。我不明白的是如何在同一個變量名的不同對象的成員函數中引用兩個數字。例如,乘以兩個數字。調用對象的對象
a.Multiply(b);
//....
Numbers::Numbers Multiply(Numbers auggend)
{
}
有人可以向我解釋(*this)
指針,並演示如何使用它作爲調用同一類的另一個對象的對象。我不明白的是如何在同一個變量名的不同對象的成員函數中引用兩個數字。例如,乘以兩個數字。調用對象的對象
a.Multiply(b);
//....
Numbers::Numbers Multiply(Numbers auggend)
{
}
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
}
(* this)是一個指向你類的instatniation的指針。在您的例子,如果數字類有一個數據值「值」:
a.Multiply(b);
....
Numbers::Numbers Multiply(Numbers auggend)
{
return (this->value) * (auggend.value);
}
注意,'返回值* auggend.value '也是正確的 – Simon
so(this-> value),指向對象「a」和「(auggend.value)」中的「value」變量;「是指乘法參數中的「值」變量? – user954004
確實如此。 (this * - > * value)vs(auggend *。* value)的原因留給讀者練習;-)。 – whitey04
this pointer
存儲地址,可用於初始化值
首先,你的例子看起來不正確的。我認爲應該是:
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);
}
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
}
};
+1的答案 – desprado