纯虚函数

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掉想析构的对象,而且析构函数中虚函数不起作用,因为若起作用则可能会调用到已经析构的子类。

posted @ 2014-09-12 13:44  想什么想  阅读(474)  评论(0编辑  收藏  举报