标签:style blog color strong div sp log on c
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掉想析构的对象,而且析构函数中虚函数不起作用,因为若起作用则可能会调用到已经析构的子类。
标签:style blog color strong div sp log on c
原文地址:http://www.cnblogs.com/thinknothing/p/3968241.html