虚函数
#include <iostream>
using namespace std;
class Point
{public:
Point(){}
~Point()
{cout<<"executing Point destructor"<<endl;}
};
class Circle:public Point
{public:
Circle(){}
~Circle()
{cout<<"executing Circle destructor"<<endl;}
private:
int radus;
};
int main()
{Point *p=new Circle;
delete p;
return 0;
}
不将析构函数声明为虚函数,在main函数中另设一个指向Circle类对象的指针变量,使它指向grad1,运行程序,分析结果:
我写的程序如下:
#include <iostream>
using namespace std;
class Point
{public:
Point(int a,int b):x(a),y(b){}
~Point()
{cout<<"executing Point destructor"<<endl;}
protected:
int x;
int y;
};
class Circle:public Point
{public:
Circle(int a,int b,int r):Point(a,b),radus(r){}
~Circle()
{cout<<"executing Circle destructor"<<endl;}
private:
int radus;
};
int main()
{Point *p=new Circle(0,0,3);
delete p;
Circle grad1(0,0,2);
Circle *p1=&grad1;
delete p1;
return 0;
}
编译都没问题,但运行时就有问题了,我想问一下,主函数中的语句是否符合题意?还有之所以出错是不是因为对对象个人grad1进行了多次的撤销对象的操作?