子类对象包孕的基类数据是在子类中析构还是基类

子类对象包含的基类数据是在子类中析构还是基类
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)释放基类部分