对象调用对象
Object calling an object
谁能给我解释一下(*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
}
};
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 检查哪个对象调用了另一个对象的对象方法
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 从 Base 引用对象调用派生类的成员
- 为什么为未删除的对象调用析构函数?
- Qt c++不会为所有对象调用move_slot.为什么?
- 使用在堆栈上创建的对象调用虚拟函数
- 使用基类对象调用Dervied Class函数
- C++:允许临时对象调用非常量成员函数的设计理念是什么?
- 从类中的对象调用类中的函数的最佳方法
- 派生对象调用的 Base 方法的模板推导
- 如何使用单个对象调用具有相同名称的两个类函数
- 是否可以从另一个类对象调用一个类函数而不继承第一个类
- 如果类没有任何成员变量,则通过临时对象调用类的成员函数的开销是多少?
- 如何对动态数组中的某些对象调用析构函数
- 如何从列表中存储的对象调用成员函数
- 从线程内的对象调用静态方法
- 从成员对象调用方法
- 当包含它的对象调用其析构函数时,unique_ptr是否未分配
- 从对象调用成员对象,错误:引用非常量值的初始值必须是左值