纯虚函数

来源:互联网 发布:高大上简历 知乎 编辑:程序博客网 时间:2024/05/28 05:17

问题1:纯虚函数的作用是什么?即什么情况下需要把函数定义为纯虚函数?

问题2:析构函数可以是虚函数,但析构函数可以是纯虚函数吗?

本章结论

答案1:纯虚函数的作用是防止类被实例化。当我们不想某个类被实例化时,可以在类中声明纯虚函数

答案2:析构函数可以是纯虚函数,但一定要实现。否则派生类被删除的时候,派生类的析构函数调用基类的析构函数就会发生错误。

-------------------------------------------------------------------------------

纯虚函数的定义是在函数的前面加上virtual关键字,在函数括号后面加上‘=0’。纯虚函数可以被实现,所以“纯虚函数就是没有被实现的虚函数”是错误的,纯虚函数就是看虚函数声明的后面有没有'=0'。相反,虚函数则一定要被实现。

请看如下代码:

class A{public:  virtual ~A()=0;  virtual void a(){ cout << "A::a()" << endl; }};A::~A(){ cout << "~A()" << endl; }class B : public A{public:  ~B(){ cout << "~B()" << endl; }  void a(){ cout << "B::a()" << endl; }};int main(){  A* ptr = new B();  ptr -> a();  delete ptr;  return 0;}
输出是

B::a()

~B()

~A()



0 0