假设有这样的代码:
class MyClass {
public:
MyClass(int foo) : foo(foo){}
private:
int foo;
//overloaded operator +
public:
MyClass operator+(MyClass &mc){
MyClass c(mc.foo + foo);
return c;
}
};
int main(int argc, char* argv[]){
MyClass c1(10);
MyClass c2(12);
c2 = c1 + c2;
return EXIT_SUCCESS;
}
运算符 + 是重载的,因此它不会修改对象,而是创建一个新对象并返回它。
当c2 = c1 + c2
被调用时,c2
与新对象绑定,但之前绑定的对象c2
没有(或至少在我看来)被释放。我说的对吗?
由于 C++ 没有垃圾收集器,这是一个问题吗?
我错过了什么吗?