在Java中,您可以在名为MyClass的类中编写代码,如
MyClass.this
它将在代码运行时使用对实例化对象的引用。 (因此,实例化的对象"知道"它自己的地址,并且可以使用该关键字对自己的引用。)
所以,基本上,我认为我可以使用像
这样的函数来实现这一点MyClass::useSelf (MyClass* first, MyClass* second);
并且,始终将对实例化对象的引用作为第一个参数传递。然后,该类可以从类中获取它的引用。
所以,
MyClass* instantiated1 = new MyClass();
MyClass* instantiated2 = new MyClass();
instantiated1.useSelf (instantiated1, instantiated2);
在课堂内写下函数:
MyClass::useSelf (MyClass* first, MyClass* second)
{
second.someFunction (first); // hypothetical function
}
所以,我传递了对象自己的实例化引用。 但我希望能够跳过第一个参数并使用
MyClass* instantiated1 = new MyClass();
MyClass* instantiated2 = new MyClass();
instantiated1.useSelf (instantiated2);
现在在课程中我需要在该功能中使用
MyClass::useSelf (MyClass* second)
{
// EDIT: Code that works!
second->someFunction(this);
}
我不认为上面的代码可以工作,但我的想法是,现在我可以自己从类内部获得对象实例的引用,而不是必须手它是来自外部代码的对自己的引用。
如果您想知道我为什么要这样做,我正在使用虚函数来利用继承。并且,派生类可能需要使用基类'功能
答案 0 :(得分:1)
this
不是假设,它是C ++中的关键字:
void MyClass::useSelf (MyClass* second)
{
// Code that works
second->someFunction(this);
}
答案 1 :(得分:0)
this
指针是所有非静态成员函数的隐式参数。因此,在成员函数内部,this
可用于引用调用对象,因为它是一个保持当前对象的内存地址的常量指针。