gpt4 book ai didi

c++ - 是否会调用析构函数,如果是,那么由于哪个 vector ?

转载 作者:行者123 更新时间:2023-11-27 22:49:15 25 4
gpt4 key购买 nike

我看了很多在线文章和书籍,但仍然无法找到答案。代码是::

#include <iostream>
#include <vector>
using namespace std;

class a
{
public :
~a()
{
cout << "destroy";
}
};
int main()
{
vector <a*> *v1 = new vector<a*>;
vector <a> *v2 = new vector<a>;
return 0;
}

答案是“没有析构函数调用”,但我不明白为什么?提前致谢。

最佳答案

您正在“新建”您的对象,因此为了销毁它们,您必须删除它们。

在第一行中,您创建了一个指向指针 vector 的指针,因此您必须删除其中的内容才能执行析构函数。删除 vector 会清空它们,但它们内容的内存将永远丢失。

在第二行中,您创建了一个指向对象 vector 的指针。销毁 vector (通过删除它)时,析构函数将执行。

在任何情况下,您都没有用任何数据填充 vector ,因此没有破坏可言。

关于c++ - 是否会调用析构函数,如果是,那么由于哪个 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247889/

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