C++ 纯虚函数
C++的纯虚函数是一种特殊的虚函数,没有函数体,只有函数原型。
纯虚函数语法格式为:
等号后面的 0 表示该函数为纯虚函数。
纯虚函数在抽象类中定义,抽象类是指包含至少一个纯虚函数的类,不能被实例化。
抽象类的子类必须实现所有纯虚函数,否则也会成为抽象类。
纯虚函数的作用是为了实现接口的统一规范,使得不同的子类可以通过实现相同的纯虚函数来实现不同的行为。
C++ 纯虚函数案例
我写个 demo 方便读者理解:
上述我写的 demo 有一个抽象类 Animal 和两个子类 Dog 和 Cat,且子类都继承 Animal 并实现纯虚函数 speak()。
上述 demo 编译运行结果:
C++ 纯虚函数注意事项
抽象类中至少有一个纯虚函数,如果一个类中包含纯虚函数,那么这个类就是抽象类,不能被实例化。
子类必须实现所有纯虚函数,如果子类没有实现父类中的纯虚函数,那么这个子类仍然是抽象类,不能被实例化。
纯虚函数可以有定义,但是定义必须在类外部。如果在类内部给纯虚函数提供了定义,那么它就不再是纯虚函数。
如果子类实现了与父类中纯虚函数同名的普通函数,那么这个函数将覆盖父类中的纯虚函数。
纯虚函数的参数和返回值与普通函数一样,可以有任意类型的参数和返回值。
如果纯虚函数只在类内部声明,而没有在类外部提供定义,那么它就是一个接口,只起到了接口的作用,不能被调用。
如果纯虚函数在父类中有定义,但是在子类中没有实现,那么子类仍然是抽象类,不能被实例化。