0
This看起来类似于我所在的位置以及this问题。C++内部类破坏程序资源管理
考虑以下
template<typename T>
class A
{
private:
class B
{
private:
B* link;
public:
B();
~B();
};
B* head;
public:
A();
~A();
};
上面生成以下假设函数来建立和连结各B
被声明的结构和定义
如果我执行的操作,如上所示,然后
B* position = head;
position = head->link;
head->link = nullptr;
delete[] head;
head = position;
我明白,调用内部类析构函数将导致外部类析构函数被调用。我是否正确处理了垃圾收集资源x
还是我做了一些未定义的内容?
为什么你认为调用内部类的析构函数(你永远不会在你发布的示例中做)将导致外部类析构函数被调用?这是另一种方式,不是吗? – bnaecker
“我做了一件未定义的东西吗?”是。在非数组类型上调用'delete []'是UB。 – bnaecker
我认为你是错误的“内部”类与“基地”类。如果基类具有虚拟析构函数,则当调用base(“inner”)类析构函数时,将调用派生(“外部”)类的析构函数。而C++中没有“垃圾收集”。 – VTT