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

时间:2015-10-21 22:24:40

标签: c++ memory-management memory-leaks instance destructor

假设我在另一个班级Inner中有一个班级Outer

class Inner
{
public:
    Inner();
    ~Inner();
};

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

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

int main()
{
    Outer out;

    return 0;
}

对象outin个实例作为成员。如果我调用out的析构函数,它会依次调用in的析构函数吗?如果没有,我如何实现类Outer的析构函数来成功调用类Inner的析构函数?

例如,如果我有一个用户应用程序,并且每个用户都有个人资料,那么当用户的帐户被删除时,如何删除,用户的个人资料呢?

1 个答案:

答案 0 :(得分:2)

当你的out实例class Outer超出范围时,首先发生的事情是它的所有成员(它们也刚刚超出范围)都会调用它们的析构函数。然后调用<form method="post"> <div class="form-group"> <label for="name">Your Name:</label> <input type="text" name="name" class="form-control" placeholder="Your Name" value="<?php echo $_SESSION['post-data']['name']; ?>" /> </div> <div class="form-group"> <label for="email">Your Email:</label> <input type="email" name="email" class="form-control" placeholder="Your Email" value="<?php echo $_SESSION['post-data']['email']; ?>" /> </div> <div class="form-group"> <label for="comment">Your Comment:</label> <textarea class="form-control" name="comment"><?php echo $_SESSION['post-data']['comment']; ?></textarea> </div> <div class="modal-footer"> <input type="submit" name="submit" class="btn" value="Submit"/> </div> </form> 的析构函数。 C ++标准保证了这一点,因此这种行为是由C ++编译器自动生成的。