为什么我需要拨打新电话?

可能重复:
何时使用“新”,何时不使用C ++?
我应该什么时候在C ++中使用新的关键字?

似乎我可以编程一些东西,而不用使用new这个词,而且我也不必担心删除任何东西,为什么我要称它?

据我所知,这是因为我会用尽堆栈内存。

它是否正确? 我想我的主要问题是,什么时候应该叫new


这是一个对象生命周期的问题:如果你堆栈分配你的对象,当这些对象超出作用域时(比如说在方法结束时),对象析构函数将被调用。 这意味着如果您将这些对象从创建它们的方法中传出,您将发现自己随时可以覆盖内存的指针。


这是因为在编译时你可能不知道你是否需要一个对象,或者有多少,或者什么类型。 new运算符允许您动态分配对象,而无需事先知道这些事情。

这是一个事先不知道对象类型的例子:

class Account { ... };
class CheckingAccount : public Account { ... };
class VisaAccount : public Account { ... };

...

Account *acct = type == "checking" ? new CheckingAccount : new VisaAccount;

您需要使用新建/删除的主要原因是为了手动控制对象的生命周期。

其他原因已由其他人提供,但我认为这更重要。 使用堆栈,您可以很好地了解对象的生命周期。 但是如果你想要一个事件发生后才销毁一个对象,那么它就不能被自动定义。

链接地址: http://www.djcxy.com/p/96525.html

上一篇: Why do I need to call new?

下一篇: JavaScript variable scope question: to var, or not to var