C++继承体系下函数调用辨析
本文最后更新于:2023年6月12日 下午
前情提要
Darli:如果我想用子类的实例调用父类的同名函数应该怎么写?
测试Code如下:
1 |
|
Conclusion
Maybe:C++
继承的同名函数可以分为虚函数重写和普通同名函数,而Java
就默认重写了
在C++
体系中,有三种方法可以实现通过子类实例调用父类同名函数:
- 域操作符(::)
b.A::func(); c->A::func();
- 将指针解引用并强转为父类,会产生一个临时父类对象实例,
((A)(*c)).func();
- 父类和子类中的普通同名函数(非virtual),酱紫的话 就失去了多态性 也就是不看实际类型 只看接收的类型,比如
A* c = new B(); c->m();
调用的就是A的m()
教学相长也 C++高深也
C++继承体系下函数调用辨析
https://mrbeancpp.github.io/2023/06/12/C-继承体系下函数调用辨析/