C++ 子类B重载父类A的方法funA后,在父类A中调用funA会调用子类B还是父类A的funA方法?
来源:互联网 发布:文泰刻绘软件下载 编辑:程序博客网 时间:2024/05/22 03:06
问题如题,碰到这个问题,于是些代码验证了一下:
class A{public: virtual void funA() { printf("A"); } void Run() { funA(); }};class B : public A{public: virtual void funA() { printf("B"); }};int _tmain(int argc, _TCHAR* argv[]){ B b; b.Run();return 0;}
如此,通过调用父类的Run方法,来调用funA,结果输出为子类重载后输出的B
奇怪的是,如果不从Run出发,而是通过父类的构造方法,则输出为父类的A,估计是构造顺序问题,构造B时,首先会构造父类A,然后此时A通过构造方法将A输出,此时B并未构造,可能也还没有把funA重载掉,不知道是否正确,求大侠解释!
class A{public: A() { funA(); } virtual void funA() { printf("A"); } void Run() { funA(); }};class B : public A{public: virtual void funA() { printf("B"); }};int _tmain(int argc, _TCHAR* argv[]){ B b;return 0;}
- C++ 子类B重载父类A的方法funA后,在父类A中调用funA会调用子类B还是父类A的funA方法?
- 声明一个父类A,它只有一个非默认构造方法;声明A的子类B,B具有默认构造方法及非默认方法,并在B的构造方法中调用基类A的构造方法。
- 实现类A可以在父类B或子类C中实现接口D的方法
- 父类引用指向子类对象,为什么会调用的是子类中重新的方法
- C语言使用技巧3:C++中子类调用父类重载函数的方法
- 继承、访问控制符、子类重载父类的方法、子类调用父类的方法
- jquery实现点击父类中的子类下的子类a,控制父类下的子类b的变换
- //如果要在子类中调用父类的方法,则应在子类的构造方法中调用
- 父类的指针指向子类的地址,调用的方法是父类的还是子类的?
- 子类A继承抽象类B,就一定要重写B的抽象方法
- Java 子类未重写的方法调用父类还是子类的问题
- 例题:子类重写父类方法后的调用规则
- 子类重写父类方法后的调用规则
- 编写类A,该类创建的对象包含一个方法f输出英文字母表,再编写一个A类的子类B,要求必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字线表,而且调用子类新增的方法g输出希腊字
- python子类调用父类的方法
- Python 子类调用父类的方法
- python子类调用父类的方法
- python子类调用父类的方法
- 勇敢向前走
- java集合中Collection和List的讲解
- 基于wince的网络音视频通信(简单易明版)
- Hibernate 效能问题
- 分布式缓存---Memcached 入门
- C++ 子类B重载父类A的方法funA后,在父类A中调用funA会调用子类B还是父类A的funA方法?
- 关于可配置工作流的一点想法
- 全面解析oracle中的锁机制3
- link list
- 如何锻炼口才
- flash builder 4.5升级到4.6问题
- 记录一个XNA物理引擎
- android中的json
- java中的路径问题