似乎我可以在没有使用这个词的情况下编程new,我也不必担心删除任何东西,所以我为什么要调用它?
根据我的理解,这是因为我会耗尽堆栈内存.
它是否正确?我想我的主要问题是,我该new什么时候打电话?
这是对象生存期的问题:如果堆栈分配对象,当这些对象超出范围时(例如,在方法结束时),将调用对象析构函数.这意味着如果您将这些对象从创建它们的方法中传出,您将发现自己的内存指针可以随时被覆盖.
这是因为在编译时你可能不知道你是否需要一个对象,或者需要多少,或者什么类型.该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)
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |