在外部 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++ 编译器自动生成。
假设我在另一个 class Outer
:
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++ 编译器自动生成。