【问题标题】:newb c++ question: when to use "new"? [duplicate]newb c++ 问题:何时使用“new”? [复制]
【发布时间】:2011-02-22 19:03:49
【问题描述】:

可能重复:
when should I use the new operator in C++

假设我有一个名为 Money 的类,它具有美元和美分参数

我可以通过以下两种方式初始化它

1) 钱 a(3,15);

2) 金钱 *b=new Money(3,15);

我的问题是什么时候应该使用 1),什么时候应该使用 2)

【问题讨论】:

  • 这看起来像是一个堆栈溢出问题。
  • 这个问题更适合stackoverflow.com
  • 对不起,我会把它移到那里。这个怎么删?
  • 如果等待的时间足够长,它可能会被迁移到那里。

标签: c++


【解决方案1】:

1) 创建一个Money 类型的本地对象a,它在堆栈上分配。 a 超出范围时将被销毁,例如。 G。当创建它的函数退出时。

2) 在堆上动态分配Money 类型的对象。该对象即使在创建它的函数退出后仍然存在,直到在其上调用 delete

如果你只需要一个对象在一个函数中使用,通常使用 1) 是可以的。如果您需要在函数退出后保留对象,请使用 2)。如果对象非常大,您还应该使用 2),即。 e.如果它占用大量内存。如果您使用 2),请记住在不再需要该对象时调用 delete

还有更多内容,例如使用多态性,但这应该可以帮助您入门。

【讨论】:

    【解决方案2】:

    第一个创建了一个 Money 对象 在堆栈上,它的寿命在 创建时的范围。 意思是当你点击 } 时它会熄灭 范围和内存被返回。 当你想创建一个 一个函数中的对象。

    第二个创建了一个 Money 对象 在堆上,它的寿命一样长 如你所愿,即直到你 删除它。当你想要你的 要传递给的对象 不同的功能

    信用:https://stackoverflow.com/users/369503/yoel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多