人小鬼不大

导航

 

  在C++中,可以将虚函数声明为纯虚函数,语法格式为:

virtual 返回值类型 函数名 (函数参数) = 0;

纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数。最后的=0并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”。包含纯虚函数的类称为抽象类(Abstract Class)。之所以说它抽象,是因为它无法实例化,即无法创建对象。因为纯虚函数没有函数体,不是完整的函数,无法调用,也无法为其分配内存空间。

  抽象类通常是作为基类,让派生类去实现纯虚函数。派生类必须实现纯虚函数才能被实例化。派生类可以只实现抽象基类中的某一个纯虚函数,此时该派生类对象还不能实例化(该派生类仍是抽象类),必须是所有纯虚函数都在派生类中实现才可以实例化。

  抽象基类不需要被实例化,但是它为派生类提供了“约束条件”,派生类必须要实现抽象基类中的纯虚函数,完成对应的功能,否则就不能实例化。抽象基类除了约束派生类的功能,还可以实现多态。

  一个纯虚函数就可以使类成为抽象基类,但是抽象基类中除了包含纯虚函数外,还可以包含其它的成员函数(虚函数或普通函数)和成员变量。只有类中的虚函数才能被声明为纯虚函数,普通成员函数和顶层函数均不能声明为纯虚函数。如下:

1 //顶层函数不能被声明为纯虚函数
2 void fun() = 0;   //compile error
3 class base{
4 public :
5     //普通成员函数不能被声明为纯虚函数
6     void display() = 0;  //compile error
7 };

 

posted on 2020-02-16 21:16  人小鬼不大  阅读(265)  评论(0编辑  收藏  举报