【发布时间】:2017-09-03 09:56:46
【问题描述】:
在以下情况下无法理解赋值运算符、复制构造函数和构造函数的使用位置,帮助?
场景 #1
ObjectType newObj = *new ObjectType;
场景 #2
newObj = theObj;
【问题讨论】:
-
在代码中放置内存泄漏是个坏主意。
标签: c++
在以下情况下无法理解赋值运算符、复制构造函数和构造函数的使用位置,帮助?
场景 #1
ObjectType newObj = *new ObjectType;
场景 #2
newObj = theObj;
【问题讨论】:
标签: c++
场景 #1
ObjectType newObj = *new ObjectType;
按以下顺序使用这些函数:
构造函数
复制构造函数
场景 #2
newObj = theObj;
按以下顺序使用这些函数:
赋值运算符
【讨论】:
newObj 中,该值是通过取消引用指针获得的。但是,我们不跟踪指针本身。
new但不delete同一个对象,你就有内存泄漏。 ObjectType newObj = *new ObjectType; 调用 new 创建一个对象,然后使用复制构造函数创建第二个对象,但第一个对象丢失并且永远不会被破坏。为了正确地delete 它,您已经无法到达第一个对象。