【发布时间】:2011-08-17 06:52:13
【问题描述】:
可能的重复:
When to use “new” and when not to, in C++?
When should I use the new keyword in C++?
A a; 和 A a = new A(); 有什么区别?
已编辑:
A* a = new A();
我的错。
【问题讨论】:
-
我们需要
A的定义。如果A没有默认构造函数,应该怎么解释?两者都是无效的,并且标记任何差异都没有意义。如果A有一个 ctor 采用A*和一个默认 ctor,或者如果A是void*,则两者都是有效的。我们无法全面详细地了解语义。这就是书籍的用途。 -
@Johannes:你很迂腐。您必须尝试与提问者会面。很多关于 SO 的问题都可以回答,“我不知道会发生什么,这取决于你没有向我们展示的许多因素,”但这没有帮助。您可以做出合理的假设。
-
@Ned pedantry 是编程的全部内容。
-
@Ned 我学会了认真对待问题并停止做出假设。对于那些不像你那样理解语言的人来说,你所做的假设不一定是显而易见的。如果有人不知道这方面的语言并搜索谷歌,他/她可能会逐字阅读这个问题。
-
@Johannes:所以您以牺牲 OP 为代价为未来的搜索者优化了答案?很奇怪。同时,您首先假设 A 是已定义的类。如果 A 是一个宏,那么这段代码绝对可以做任何事情!如果这段代码是按字面意思提供给 C++ 编译器的,它会抱怨 A 是未定义的。如果你对问题不那么认真,你会帮助更多的人。
标签: c++ memory-management syntax