gpt4 book ai didi

c++ - 为什么 C++ std::list::clear() 不调用析构函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:46 25 4
gpt4 key购买 nike

看这段代码:

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

问题是:为什么在l.clear()处没有调用list元素的析构函数?

最佳答案

你的 list 是指针。指针没有析构函数。如果你想调用析构函数,你应该尝试 list<test>相反。

关于c++ - 为什么 C++ std::list::clear() 不调用析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com