如果为该类的一个对象动态分配内存作为参数,会发生什么?

问题描述 投票:2回答:1
class Example
{
  private:
   Example* pointer;
   Example* pointer2;
  public:
   Example();
   void setPointer2();
};

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”运算符有关系吗?

c++ dynamic new-operator
1个回答
4
投票

您的代码中的一个主要问题是无限递归!您定义的构造函数:

Example::Example()
{
  pointer = new Example();
}

创建自己类型的新对象。这将再次调用构造函数,而该调用将再次调用构造函数...]

但是,除了那个问题,是直接将其地址分配给new来创建pointer对象还是在其他位置创建对象,然后将其地址(以后)分配给pointer2都没有关系]。两者都将指向该类的对象。

© www.soinside.com 2019 - 2024. All rights reserved.