#include <iostream>
using namespace std;
class A{
public:
A()
{
cout<<"construct A"<<endl;
}
virtual void disp()
{
cout<<"AAAA"<<endl;
}
virtual ~A()=0; //纯虚函数的析构函数,但是必须要有实现 在下面 A::, 否则析构派生类会报错
//只要含有纯虚函数的基类就是抽象基类,不能生成实例对象,A *pa = new A() 报错。
};
A::~A()
{
cout<<"destory A"<<endl;
}
class B:public A {
public:
B()
{
cout<<"construct B"<<endl;
}
void disp() override //override 关键字 强制重写,不是重写就报错
{
cout<<"BBBB"<<endl;
}
~B()
{
cout<<"destory B"<<endl;
}
};
int main()
{
B *b = new B();
b->A::disp(); //用A:: or X:: 调用指定版本的虚函数
delete b;
return 0;
}