virtual继承和不继承
用virtual修饰的虚函数,用来继承重写,没有virtual修饰的,取决于父类
定义 父类 *x=new 子类
首先父类不能调用子类的函数,自能调用本身的函数,所以,只有两种情况,1.无virtual修饰,调用本身函数。2.有virtual修饰,调用子类重写的函数
定义 子类 *y=new 子类
子类对父类的函数,如果没有同型函数,直接继承父类的函数,如果型名,有virtual修饰,则重写,无virtual修饰,则调用子类的。
特别的:如果子类和父类有同名但不同型,则不能调用父类的同名函数,不能继承或重写的同时还重载
总结:
对于父类函数(virtual、非virtual),如果子类没有同名函数,则正常继承
对于父类函数(virtual、非virtual),如果子类有同名函数,无同型(形参不同)函数,则不能调用父类函数
对于父类函数(virtual、非virtual),如果有同型函数:
----非virtual函数由指针类型决定调用哪个,既和父类一致,编译时确定
----virtual函数由指针指向的对象决定调用哪个(运行时决定)和子类一致,运行时确定
本文来自博客园,作者:Tenerome,转载请注明原文链接:https://www.cnblogs.com/Tenerome/p/15972543.html