#include <iostream>
using namespace std;
class ClassA {
int k;
public:
ClassA(int i) : k(i)
{
}
~ClassA()
{
cout << "A destroyed" << " k=" << k << endl;
}
ClassA copyAndModify()
{
ClassA a(k*2);
return a;
}
void taunt()
{
cout << k << endl;
}
};
int main (int argc, char * const argv[]) {
ClassA original(1)
ClassA modified = original.copyAndModify();
modified.taunt();
return 0;
}
オブジェクト「a」(メソッドcopyAndModify内)は、メソッドが戻ったときに分解されたと思いましたが、そうではありませんでした。これは、メソッド内で作成され、返されるすべてのオブジェクトが分解されないことを意味しますか?これはすべてのコンパイラに当てはまりますか?