从类的代码中使用对象实例化的引用

时间:2014-10-31 20:10:50

标签: c++ oop this

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

我不认为上面的代码可以工作,但我的想法是,现在我可以自己从类内部获得对象实例的引用,而不是必须手它是来自外部代码的对自己的引用。

如果您想知道我为什么要这样做,我正在使用虚函数来利用继承。并且,派生类可能需要使用基类'功能

2 个答案:

答案 0 :(得分:1)

this不是假设,它是C ++中的关键字:

void MyClass::useSelf (MyClass* second)
{
    // Code that works
    second->someFunction(this);
}

答案 1 :(得分:0)

this指针是所有非静态成员函数的隐式参数。因此,在成员函数内部,this可用于引用调用对象,因为它是一个保持当前对象的内存地址的常量指针。