0%

虚函数

多态

多态是在不同继承关系的类对象,去调同一函数,产生了不同的行为。

就是说,有一对继承关系的两个类,这两个类里面都有一个函数且名字、参数、返回值均相同,然后我们通过调用函数来实现不同类对象完成不同的事件。

虚函数

在main函数中,如果有父类或者子类的实例对象,就需要有父类的虚函数的实现;在main函数中,如果没有父类或者子类的实例对象,可以不实现父类的虚函数。

虚函数的目的是为了(在继承中)实现多态 。每一个类都有一个虚函数表(v-table),每个对象都有一个虚函数指针(vptr),指向虚函数表。当子类对象被创建后,虚函数指针就会指向子类中覆盖的虚函数。当使用基类指针时,虚函数指针将根据基类指针指向的对象的实际类型,来指向正确的函数。

纯虚函数

子类必须实现该函数(接口)

有纯虚函数的类叫做抽象类,不能生成实例对象

抽象类就像一个规范一样,like 接口(Interface) in Java

虚函数与纯虚函数

定义一个函数为虚函数,不代表函数为不被实现的函数。

定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。

定义一个函数为纯虚函数,才代表函数没有被实现。

定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。

Welcome to my other publishing channels