#include<iostream>
using namespace std;
class A
{
public:
int i;
A() {cout<<"A()"<<endl;}
~A() {cout<<"~A()"<<endl;}
};
class B:public A
{
public:
int j;
B(): j(10)
{
this->i=20;
this->~A();
}
};
int main()
{
B abc;
cout<<"i="<<abc.i<<" j="<<abc.j<<endl;
}//main
两个问题:
- 为什么 A 的析构函数会像普通函数一样被调用而不是销毁对象?(或者只有当子类的析构函数调用基类的析构函数时,基类才会被销毁?)我正在尝试这个示例代码来了解析构函数的工作原理。因此,如果简单地调用析构函数不会破坏对象,那么显然还有其他类型的调用调用析构函数,然后才破坏对象。这种电话有什么特别之处,它是什么电话?
有没有办法在 B 的构造函数中为 A 设置一个初始化列表?像这样的东西:
class B:public A { B(): j(10), A():i(20) {} };