1、虚析构
#include <iostream>
using namespace std;
class stu
{
public:
virtual ~stu()
{
cout << "~stu\n";
}
};
class stu1 :public stu
{
public:
virtual ~stu1()
{
cout << "~stu1\n";
}
};
class stu2
{
public:
~stu2()
{
cout << "~stu2\n";
}
};
int main()
{
stu* db1 = new stu1;
//db1->fun1();
//delete db1;
delete (stu2*)db1;//如果最后将要释放的对象为db1强转为stu2*,则调用的析构函数为类stu2中的析构函数。
//仍然释放掉stu1的空间
system("pause");
return 0;
}
2、纯虚函数
#include <iostream>
using namespace std;
class stu//有纯虚函数,且有普通函数就叫抽象类。完全由一个或多个纯虚函数构成的类叫接口类。
{
public:
virtual void fun() = 0;//一个类有纯虚函数则不能有实列化对象,只能用子类重写纯虚函数,来实现例化对象。
void fun1()
{
}
};
class stu1 :public stu
{
public:
void fun()
{
cout << "stu1\n";
}
};
int main()
{
stu1 db;
db.fun();
system("pause");
return 0;
}