C++ 在外部类的实例中删除内部类的实例
假设我在另一个类C++ 在外部类的实例中删除内部类的实例,c++,memory-management,memory-leaks,instance,destructor,C++,Memory Management,Memory Leaks,Instance,Destructor,假设我在另一个类外部中有一个类内部: class Inner { public: Inner(); ~Inner(); }; class Outer { public: Outer(); ~Outer(); private: Inner in; }; 现在我主要声明一个类型为Outer的对象: int main() { Outer out; return 0; } 对象out具有in的实例作为成员。如果我将的析构函数调出,它会反过来
外部中有一个类内部:
class Inner
{
public:
Inner();
~Inner();
};
class Outer
{
public:
Outer();
~Outer();
private:
Inner in;
};
现在我主要声明一个类型为Outer的对象:
int main()
{
Outer out;
return 0;
}
对象out
具有in
的实例作为成员。如果我将的析构函数调出
,它会反过来调用的析构函数吗?如果没有,如何实现类外部
的析构函数以成功调用类内部
的析构函数
例如,如果我有一个用户应用程序,并且每个用户都有一个配置文件,那么当用户的帐户被删除时,我如何才能做到这一点,用户的配置文件也是如此?当您的类Outer
的实例out
超出范围时,首先发生的是它的所有成员(它们也刚刚超出范围)叫他们的破坏者来。然后调用类外部
的析构函数。C++标准保证了这个行为,所以这个行为是由C++编译器自动生成的。< /p>将调用< <代码>中的<代码>析构函数。如果
中的是一个内部*
并使用new
声明,则不会调用它。