class Example
{
private:
Example* pointer;
Example* pointer2;
public:
Example();
void setPointer2(Example* object);
};
Example::Example()
{
pointer = new Example();
}
void Example::setPointer2(Example* object)
{
this->pointer2 = object;
}
int main()
{
Example object;
object.setPointer2(new Example());
return 0;
}
删除并不重要。我只是想知道这两个对象(指针和指针2 持有的地址)之间有什么区别。它们的分配方式不同吗?实际的问题是,在哪里使用“new”运算符重要吗?
最佳答案
您的代码中存在的一个主要问题是无限递归!您定义的构造函数:
Example::Example()
{
pointer = new Example();
}
创建一个自己类型的新对象。这将(再次)调用构造函数,并且该调用将调用构造函数(一次又一次......)
但是,除了这个问题之外,无论您是通过直接将其地址分配给 pointer
来创建一个 new
对象,还是在其他地方创建该对象,这并不重要然后将其地址(稍后)分配给pointer2
。两者都将指向该类的一个对象。
关于c++ - 如果您将类的一个对象作为参数动态分配内存,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644901/