关于C++中子类调用父类方法的一个问题
2015-11-13 21:11
579 查看
在写代码时遇到了以下类似情况:
情况是,如果子类中的函数调用了父类的方法,而这个父类的方法调用了一个方法,这个方法同时在子类和父类中都有定义。
输出结果为:
B::func3
A::func3
B::func1
A::func2
A::func1
可见在还是父类的方法被调用了。这可能是非虚函数在编译器时期就已经确定调用函数地址的原因吧。
#include <iostream> #include <string> using namespace std; class A { public: void func1(string prefix) { cout << prefix << "A::func1" << endl; } void func2(string prefix) { cout << prefix << "A::func2" << endl; func1(prefix + " "); } void func3(string prefix) { cout << prefix << "A::func3" << endl; } }; class B: public A { public: void func1(string prefix) { cout << prefix << "B::func1" << endl; } void func3(string prefix) { cout << prefix << "B::func3" << endl; A::func3(prefix + " "); func1(prefix + " "); func2(prefix + " "); } }; int main() { B b; b.func3(""); }
情况是,如果子类中的函数调用了父类的方法,而这个父类的方法调用了一个方法,这个方法同时在子类和父类中都有定义。
输出结果为:
B::func3
A::func3
B::func1
A::func2
A::func1
可见在还是父类的方法被调用了。这可能是非虚函数在编译器时期就已经确定调用函数地址的原因吧。
相关文章推荐
- Android Native 绘图方法
- PostgreSQL教程(三):表的继承和分区表详解
- C#中struct和class的区别详解
- Lua面向对象之类和继承浅析
- 浅析Ruby中继承和消息的相关知识
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- C++实现不能被继承的类实例分析
- PHP类的封装与继承详解
- 深入了解PHP类Class的概念
- 解析在main函数之前调用函数以及对设计的作用详解
- js继承 Base类的源码解析
- jquery 表单验证之通过 class验证表单不为空
- Javascript 面向对象 继承
- JavaScript 继承使用分析
- Javascript面向对象编程(二) 构造函数的继承
- javascript面向对象之Javascript 继承
- JavaScript 对象、函数和继承
- setAttribute 与 class冲突解决