Fork me on Github Fork me on Gitee

virtual继承和不继承

用virtual修饰的虚函数,用来继承重写,没有virtual修饰的,取决于父类

定义 父类 *x=new 子类

首先父类不能调用子类的函数,自能调用本身的函数,所以,只有两种情况,1.无virtual修饰,调用本身函数。2.有virtual修饰,调用子类重写的函数

定义 子类 *y=new 子类

子类对父类的函数,如果没有同型函数,直接继承父类的函数,如果型名,有virtual修饰,则重写,无virtual修饰,则调用子类的。

特别的:如果子类和父类有同名但不同型,则不能调用父类的同名函数,不能继承或重写的同时还重载

总结:

对于父类函数(virtual、非virtual),如果子类没有同名函数,则正常继承

对于父类函数(virtual、非virtual),如果子类有同名函数,无同型(形参不同)函数,则不能调用父类函数
 对于父类函数(virtual、非virtual),如果有同型函数:
 ----非virtual函数由指针类型决定调用哪个,既和父类一致,编译时确定
 ----virtual函数由指针指向的对象决定调用哪个(运行时决定)和子类一致,运行时确定

posted @ 2022-03-06 16:42  Tenerome  阅读(287)  评论(0编辑  收藏  举报