对象调用一个对象

时间:2011-10-07 04:03:10

标签: c++ class pointers

有人可以向我解释(*this)指针并演示它如何被用作调用同一类的另一个对象的对象。我不明白的是你如何在同一个变量名的不同2个不同对象的成员函数中引用两个数字。例如,乘以两个数字。

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

5 个答案:

答案 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
   }
};