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

时间:2013-03-18 19:31:47

标签: c++ object pointers constructor

我想知道如何在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);

}

4 个答案:

答案 0 :(得分:5)

这将是:

MyClass2()
{
    pObjectName = this;
}

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您需要使用this,例如:

MyClass2()
{
  pObjectName = this;
}

答案 3 :(得分:0)

为什么不说:

MyClass object;
printf("%p", &object);