このコードを見てください:
class test
{
public:
test() { cout << "Constructor" << endl; };
virtual ~test() { cout << "Destructor" << endl; };
};
int main(int argc, char* argv[])
{
test* t = new test();
delete(t);
list<test*> l;
l.push_back(DNEW test());
cout << l.size() << endl;
l.clear();
cout << l.size() << endl;
}
次に、この出力を見てください。
Constructor
Destructor
Contructor
1
0
問題は、リスト要素のデストラクタが at で呼び出されないのはなぜl.clear()
ですか?