【发布时间】:2016-10-05 16:23:57
【问题描述】:
我在一些地方看到过这样构造的对象:
Foo foo;
foo = *(new Foo());
在我看来,这是非常错误的。 new 运算符为 Foo 分配内存,然后取消引用该指针并用于将内容复制到原始且已构造的 foo 对象。由于指针丢失,分配的内存泄漏。
这是邪恶的,永远不应该做,还是我错过了什么?
【问题讨论】:
-
这是真的。 .
-
你说得对,太可怕了!当不需要真正的动态对象(Java 风格)时,不必要的
Foo *foo = new Foo();分配已经够糟糕了,但这是邪恶的。 -
我想这种初始化来自 Java/C# 程序员试图创建新对象,注意到编译器不允许他们这样做,因为 foo 是一个对象而不是指针,并添加 * 所以编译器很高兴..
-
如果一个 java/c# 程序员在现代 C++ 中做了一个新的,你可能会认为它是错误的。他们习惯于到处做新的事情,而在 C++ 中,这几乎总是最糟糕的事情。
标签: c++