在外部 class 的实例中删除内部 class 的实例

Delete instance of inner class in an instance of outer class

假设我在另一个 class Outer:

中有一个 class Inner
class Inner
{
public:
    Inner();
    ~Inner();
};

class Outer
{
public:
    Outer();
    ~Outer();
private:
    Inner in;
};

现在说在 main 中我声明了一个 Outer 类型的对象:

int main()
{
    Outer out;

    return 0;
}

对象 out 有一个 in 的实例作为其成员。如果我调用out的析构函数,它会反过来调用in的析构函数吗?如果没有,我如何实现 class Outer 的析构函数以成功调用 class Inner 的析构函数?

例如,如果我有一个用户应用程序,并且每个用户都有一个配置文件,那么当用户帐户被删除时,我该如何做到这一点,用户的配置文件也会被删除?

当您的 class Outer 的实例 out 超出范围时,首先发生的事情是其所有成员(也刚刚超出范围)调用其析构函数。然后调用 class Outer 的析构函数。 C++ 标准保证这一点,因此此行为由您的 C++ 编译器自动生成。