纯虚函数的写法
class ClassA
{
//定义
public:
virtual int doWork() = 0;//纯虚函数(父类不实现,由子类实现)
virtual int doWork();//虚函数
};
class ClassB
{
public:
int doWork()
{
printf("ClassB::doWork() is called");
}
};
调用方法:
int main()
{
ClassA *ca = new classB();
ca->doWork();//调用了ClassB的doWork方法;
return0;
}
注意点:
1、虚函数在实现时,若子类需调用析构函数,父类的析构函数在定义时需加上virtual 前缀,否则默认调用父类的析构,子类的析构无法被调用。
2、1中若构造函数中开辟了新的堆内存,有内存溢出的风险。
+
virtual int work(); 虚函数 该staff 类里也可实现
virtual int work()=0;纯虚函数,只声明,不实现。
虚函数不能实例化对象。
纯虚函数的类只能被继承,不能被实例化