C++ 子类B重载父类A的方法funA后,在父类A中调用funA会调用子类B还是父类A的funA方法?
2012-02-19 21:12
363 查看
问题如题,碰到这个问题,于是些代码验证了一下:
如此,通过调用父类的Run方法,来调用funA,结果输出为子类重载后输出的B
奇怪的是,如果不从Run出发,而是通过父类的构造方法,则输出为父类的A,估计是构造顺序问题,构造B时,首先会构造父类A,然后此时A通过构造方法将A输出,此时B并未构造,可能也还没有把funA重载掉,不知道是否正确,求大侠解释!
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++关于子类调用父类的构造方法的问题
- c++和java中关于如何调用父类方法和子类方法的辨析
- PL/SQL小技巧一个:在子类中怎么调用父类被重载的方法
- 关于子类继承父类,父类调用被子类重载的方法是输出什么
- c++多态,子类和父类方法的调用
- PL/SQL小技巧一个:在子类中怎么调用父类被重载的方法
- Java编程中在子类重载方法中调用父类中该方法时,该方法包含递归时出现的调用错误
- C语言使用技巧3:C++中子类调用父类重载函数的方法
- 关于C++中子类调用父类方法的一个问题
- 子类调用父类方法:c++和java的不同
- 父类的指针指向子类的地址,调用的方法是父类的还是子类的?
- 子类与父类之间的方法重载、隐藏、重写与虚方法调用
- 关于C++中子类调用父类方法的一个问题
- C++和JAVA中一些区别,包括指向子类的引用会调用谁的方法,子类构造函数自动调用父类构造函数时,父构造会调用的谁方法
- 一个子类要调用父类的方法时,默认是使用this还是super?
- c++ 子类“重载”父类的方法
- Java 子类未重写的方法调用父类还是子类的问题
- c++ 子类调用父类构造方法 调用父类方法 类声明与实现分离
- 子类继承父类时,子类与父类有同名变量,当使用子类对象调用父类方法使用同名变量,这个变量是子类的,还是父类的?(转)