首页 > 代码库 > 纯虚函数

纯虚函数

1、纯虚函数

class Base{public:    Base(){};    virtual ~Base(){};};
//类A是一个抽象类
class A : public Base{public: A(){} virtual ~A(){} virtual void fun() = 0; //纯虚函数};class B : public A{public: B(){} virtual ~B(){} virtual void fun() { std::cout<<"B"<<std::endl; }};int main(){ //A a; //抽象类A不能实例化对象,编译器会报错 A *a = new B; a->fun(); B b; b.fun(); return 0;}

含有纯虚函数的类是抽象类,抽象类不能实例化对象。抽象类的派生类要实现纯虚函数,否则也是抽象类。一般抽象类是基类,也可以不是。

2、构造函数、析构函数中的虚函数

构造函数不能是虚函数,而且构造函数中的虚函数不起作用,因为若起作用可能会调用到子类,但是子类还没有生成。

析构函数一般是虚函数,因为这样才能保证delete掉想析构的对象,而且析构函数中虚函数不起作用,因为若起作用则可能会调用到已经析构的子类。

纯虚函数