对象调用对象

Object calling an object

本文关键字:对象 调用      更新时间:2023-10-16

谁能给我解释一下(*this)指针,并演示一下如何使用它作为一个对象调用同一类的另一个对象。我不明白的是,你如何在不同的成员函数中引用两个数字,两个不同的对象,具有相同的变量名。例如,将两个数字相乘。

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

每个对象的成员函数都可以访问一个名为this的指针,该指针指向对象本身。当我们调用一个成员函数时,它的值this被设置为调用它的对象的地址。使用this指针,任何成员函数都可以找到它所属对象的地址。它还可以用来访问它所指向的对象中的数据。例子:

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

this pointer存储了类实例的地址,可以用来初始化值

(*this)是指向类的实例化的指针。在你的例子中,如果Numbers类有一个数据值"value":

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

首先,您的示例看起来不太正确。我认为应该是:

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