次のコードがあるとします。
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++ にはガベージ コレクターがないため、これは問題になりますか?
何か不足していますか?