在c++构造函数中创建一个指向对象的指针

Make a pointer to an object in the constructor C++

本文关键字:一个 对象 指针 构造函数 c++ 创建      更新时间:2023-10-16

我想知道如何在c++构造函数中创建一个指向新创建对象的指针?

类的地址是什么?

class MyClass
{
    public:
};
class MyClass2
{
    public:
    //I need a pointer to the created object
    MyClass2 *pObjectName;
    //Constructor
    MyClass2()
    {
        pObjectName = &//I have no clue how to get the adress of the (not yet) created object.
    }
};
int main()
{
    //The way it works
    //Makes Object
    MyClass *pObject;
    MyClass Object;
    //pObject points to Object
    pObject = &Object;
    //Prints adress of Object
    printf("%p", pObject);

    //The way I would like to see it work
    MyClass2 Object2;
    //Prints adress of Object
    printf("%p", Object2.pObjectName);
}

应该是:

MyClass2()
{
    pObjectName = this;
}

但是你不需要那样做。this指针隐式传递给类的每个非静态成员函数。

在类内部,您可以使用this访问指向对象的指针。该指针被定义并隐式传递到每个实例方法中。因此,您不需要将它记忆到另一个变量中。

您需要使用this,例如:

MyClass2()
{
  pObjectName = this;
}

为什么不说:

MyClass object;
printf("%p", &object);
相关文章: