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

cam*_*cam 3 c++ new-operator

可能的重复:
在C++中何时使用"new"和何时不使用?
我什么时候应该在C++中使用new关键字?

似乎我可以在没有使用这个词的情况下编程new,我也不必担心删除任何东西,所以我为什么要调用它?

根据我的理解,这是因为我会耗尽堆栈内存.

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

Gui*_*ici 9

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

  • 为什么选择downvote? (2认同)

Mar*_*tos 5

这是因为在编译时你可能不知道你是否需要一个对象,或者需要多少,或者什么类型.该new运营商允许你动态分配对象,而无需事先知道这样的事情.

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

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

...

Account *acct = type == "checking" ? new CheckingAccount : new VisaAccount;
Run Code Online (Sandbox Code Playgroud)