C++虚函数、纯虚函数(抽象函数)
虚函数
虚函数是C++实现动态多态的一种方式,可以使得父类指针指向子类对象,调用虚函数时是调用子类的同名成员函数。
而普通的成员函数没有这个特性,使用父类指针调用方法时无法调用子类函数。
虚函数在类的成员函数前用virtual关键字修饰,可以没有实现,子类也不一定要实现该方法。
如下,父类Animal中有虚函数fun(),子类为Cat和Dog;另一个父类Vehicle中的fun()为普通函数,子类为Car和Bicycle
#include
using namespace std;class Animal
{
public:virtual void fun() {printf("Animal\n");}
};class Dog:public Animal
{
public:virtual void fun() {printf("Dog\n");}
};class Cat:public Animal
{
public:virtual void fun() {Animal::fun();printf("Cat\n");}
};class Vehicle {
public:void fun() {printf("Vihecle\n");}
};class Car :public Vehicle {
public:void fun() {printf("Car\n");}
};class Bicycle :public Vehicle {
public:void fun() {printf("Bicycle\n");}
};int main()
{Animal *a1 = new Dog();Animal *a2 = new Cat();a1->fun();a2->fun();Vehicle *v1 = new Car();Vehicle *v2 = new Bicycle();v1->fun();v2->fun();
}
结果:

由于Cat类中写了Animal::fun();所以在输出“Cat”前会输出“Animal”。
纯虚函数
在virtual函数后面写上=0;虚函数就成了纯虚函数,也就是抽象函数,包含抽象函数的类称为抽象类。
抽象函数没有实现,父类不能实例化,子类如果不实现该抽象函数的话也不能实例化,如下:

接口是通过抽象类实现的,接口中只包含抽象函数。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
