#include<iostream>
using namespace std;
class Point
{
public:
Point(int a, int b) {
a = x;
b = y;
}
~Point()
{
cout << "executing Point destructor" << endl;
}
private:
int x;
int y;
};
class Circle :public Point
{
public:
Circle(int a, int b, int c) :Point(a, b), radus(c) {
}
~Circle()
{
cout << "executing Circle destructor" << endl;
}
private:
int radus;
};
int main()
{
Point* p = new Circle(2.5, 1.8, 4.5);
delete p;
return 0;
}
#include<iostream>
using namespace std;
class Point
{
public:
Point(int a, int b) {
a = x;
b = y;
}
virtual ~Point()
{
cout << "executing Point destructor" << endl;
}
private:
int x;
int y;
};
class Circle :public Point
{
public:
Circle(int a, int b, int c) :Point(a, b), radus(c) {
}
~Circle()
{
cout << "executing Circle destructor" << endl;
}
private:
int radus;
};
int main()
{
Point* p = new Circle(2.5, 1.8, 4.5);
delete p;
return 0;
}
```
virtual 修饰的析构函数,就是虚析构函数;
虚析构函数的特点是:在父类中通过virtual 修饰析构函数后,通过 父类指针再去指向子类对象,然后通过delete 父类指针,就可以 释放掉子类对象了【也就是 先会调子类的析构函数,然后再调父类的析构函数】
如果没有 virtual修饰 父类的析构函数,那通过 父类指针再去指向子类对象,然后通过delete 父类指针,只会释放父类对象,也就是只会调用父类的析构函数。
如有帮助,欢迎采纳哈!