子类对象包含的基类数据是在子类中析构还是基类
- C/C++ code
#include <iostream>using namespace std;class A{public: A():i(1){cout<<i<<endl;} ~A(){cout<<"A"<<endl;} int i;};class B : public A{public: B():A(){} ~B(){cout<<"B"<<endl;}};int main(){ B b;}大家好,B中包含了A中的i变量,对象析构时,B中的i变量是在~B中清理还是在~A中清理
在~A中理由:构造函数就是调用基类构造函数赋值,所以析构也是
在~B中理由:继承A,i就是B的了
[解决办法]
应该是~A
[解决办法]
当B析构的时候
1)执行析构函数中的代码
2)释放成员变量
3)释放基类部分