c++ - 从子析构函数中删除父构造函数所做的分配

标签 c++ inheritance destructor

我有一个这样的子构造器:

Child():Parent(){

}

所以 child 的析构函数是:

~Child(){

}

parent 有类似的东西:

Parent(){
  abc.Construct();
} 

~Parent(){
  abc.Destruct();
}

如何确保在销毁子进程期间删除初始化期间(在 Parent() 构造函数中)进行的所有分配?

最佳答案

在 Parent 构造函数中完成的操作应该在 Parent 析构函数中撤消,而不是在 Child 析构函数中。

Parent 的析构函数在 Child 的析构过程中被自动调用;就像父类构造函数在子类构造过程中被自动调用一样。

Child 可以通过构造函数的初始化列表明确指定如何初始化 Parent。这是必需的,因为 Parent 类不需要有默认构造函数。不需要明确指定在销毁 Child 时如何销毁 Parent,因为每个类只有一个析构函数,并且该析构函数不需要任何参数。

关于c++ - 从子析构函数中删除父构造函数所做的分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084506/

相关文章:

c++ - 不使用模板重载乘法运算符

c++ - C++中堆栈的异常处理

c++ - 继承类型强制

c++ - 何时使用 =default 使析构函数默认?

c++ - 如何更正警告 : cast to pointer from integer of different size [-Wint-to-pointer-cast]

c++ - 我的数组有足够的堆栈空间,那么为什么这个循环会失败?

c++ - 在 Xcode 中使用 boost 库编译项目时出错

c++ - 继承层次结构与多重继承 (C++)

mysql - 在继承情况下使用 UNION 和 JOIN - MySQL

c++ - 为什么 C++ 中的默认用户定义析构函数会增加执行时间?