函数重写(覆盖,关键字virtual)

1.多重继承里,如果多个父类含有同名的函数(eg:read),且同名的函数是虚函数;此时一个从这多个父类里派生出的子类。

  1.1如果子类没有显示的对同名进行声明,定义(即完全从父类继承过来)

    子类实例在调用同名函数时会报错:访问不明确。这时可以在调用同名方法前加上类名。

  1.2如果子类有显示的对同名进行声明,定义

    子类实例在调用同名函数时,只会调用自己的同名函数

  1.3有人曾问过:如果子类想重写父类中的某一个的同名实现,这时该怎么办?

    子类同名函数的实现和父类同名函数的实现没有任何关系,它们唯一的关系就是父类子类间的函数同名,所以这时完全可以抛开所有父类同名函数里的实现,在子类的同名函数中实现属于子类的功能,而这并不会影响我们调用父类同名函数。

 

2.virtual函数(虚函数)和普通的成员函数,有什么区别

  2.1为什么要用虚函数

  相同接口,实现不同功能

  那么通过继承,进行成员函数重定义,能否实现相同接口,不同功能?可以,只不过在使用时要进行一个指针强转。而虚函数,在赋值后不需要进行指针强转。

  2.2虚函数是动态生成的,普通成员函数是静态生成的。

posted @ 2019-05-11 10:12  N_zero  阅读(1164)  评论(0)    收藏  举报