Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在外部类的实例中删除内部类的实例_C++_Memory Management_Memory Leaks_Instance_Destructor - Fatal编程技术网

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
声明,则不会调用它。