#include
using namespace std;
class A //基类
{
protected:
int m_len;
public:
A(int l);
virtual ~A(); //虚析构函数
};
A::A(int l)
{
cout << “AAAAAAAAAAAAAAAAA” << endl;
m_len = l;
}
A::~A()
{
cout << “A Destruct” << endl;
}
class Array : public A
{
private:
char *m_data;
public:
Array(int l);
~Array();
};
Array::Array(int l) : A(l)
{
cout << “Array Constructor” << endl;
m_data = new char[m_len + 1];
}
Array::~Array()
{
cout << “Array Destruct” << endl;
delete m_data;
}
int main()
{
A *pa = new Array(10); //即可直接填写函数所需参数
delete pa; //通过父类指针释放子类对象
return 0;
}
要注意的点
***虚析构函数的重写,父类和子类的析构函数都会被调用
***在父类指针赋值中,子类对象的函数参数的直接传参形式