抽象类:有纯虚函数的类
纯虚函数:在虚函数的形参列表右边写上=0;
抽象类不可以创建对象,只能声明指针或者引用
抽象类做框架,抽象类只能由子类去创建对象,由子类去实现父类的纯虚函数。
抽象类的纯虚析构函数必须在类内完成。
纯虚函数和虚函数之间的区别:
含有虚函数的类不能称为抽象类,含有纯虚函数的类可以被称为抽象类
虚函数可以直接调用也可以在其子类中使用重载、重写等形式进行调用,而纯虚函数必须在子类中实现才能被调用
class Abstract { public: string name; Abstract() { cout<<"Abstract()"<<endl; } Abstract(const string name) { this->name = name; cout<<"Abstract(const string name)"<<endl; } ~Abstract() { cout<<"~Abstract()"<<endl; } virtual void fun() = 0; virtual void show() = 0; }; class Sub:public Abstract { public: virtual void fun() { cout<<" virtual void fun()"<<endl; } virtual void show() { cout<<" virtual void show()"<<endl; } Sub() { cout<<"Sub()"<<endl; } ~Sub() { cout<<"~Sub()"<<endl; } }; int main(int argc, char *argv[]) { Abstract *abs = new Sub; abs->fun(); Sub s; delete abs; s.fun(); s.show(); cout<<"main() over"<<endl; }