在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 };
来源:https://www.cnblogs.com/Sheenagh/p/12318777.html