函数重写(覆盖,关键字virtual)
1.多重继承里,如果多个父类含有同名的函数(eg:read),且同名的函数是虚函数;此时一个从这多个父类里派生出的子类。
1.1如果子类没有显示的对同名进行声明,定义(即完全从父类继承过来)
子类实例在调用同名函数时会报错:访问不明确。这时可以在调用同名方法前加上类名。
1.2如果子类有显示的对同名进行声明,定义
子类实例在调用同名函数时,只会调用自己的同名函数
1.3有人曾问过:如果子类想重写父类中的某一个的同名实现,这时该怎么办?
子类同名函数的实现和父类同名函数的实现没有任何关系,它们唯一的关系就是父类子类间的函数同名,所以这时完全可以抛开所有父类同名函数里的实现,在子类的同名函数中实现属于子类的功能,而这并不会影响我们调用父类同名函数。
2.virtual函数(虚函数)和普通的成员函数,有什么区别
2.1为什么要用虚函数
相同接口,实现不同功能
那么通过继承,进行成员函数重定义,能否实现相同接口,不同功能?可以,只不过在使用时要进行一个指针强转。而虚函数,在赋值后不需要进行指针强转。
2.2虚函数是动态生成的,普通成员函数是静态生成的。

浙公网安备 33010602011771号