有人可以向我解释(*this)
指针并演示它如何被用作调用同一类的另一个对象的对象。我不明白的是你如何在同一个变量名的不同2个不同对象的成员函数中引用两个数字。例如,乘以两个数字。
a.Multiply(b);
//....
Numbers::Numbers Multiply(Numbers auggend)
{
}
答案 0 :(得分:5)
this pointer:
每个对象的成员函数都可以访问一个名为this
的指针,该指针指向对象本身。当我们调用一个成员函数时,它会以this
的值设置为调用它的对象的地址。使用this
指针,任何成员函数都可以找出它所属的对象的地址。它还可以用来访问对象中的数据吧指着。示例:
void setdata(int ii)
{
i=ii; // one way to set data
this->i=ii; // another way to set data
}
答案 1 :(得分:3)
this pointer
存储类实例的地址,可用于初始化值
答案 2 :(得分:0)
(* this)是指向一个类的instatniation的指针。在您的示例中,如果Numbers类具有数据值“value”:
a.Multiply(b);
....
Numbers::Numbers Multiply(Numbers auggend)
{
return (this->value) * (auggend.value);
}
答案 3 :(得分: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);
}
答案 4 :(得分: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
}
};