#include <stdio.h> #include <stdlib.h> #include <conio.h> class A { public: void myfunc() { printf("A myfunc!\n"); mytest(); } virtual void mytest() { printf("A mytest!\n"); } }; class B:public A { public: void myfunc() { printf("B myfunc!\n"); } virtual void mytest() { printf("B mytest!\n"); } }; void main() { class B Bb; ((class A*)&Bb)->myfunc(); ((class A)Bb).myfunc(); getch(); }
输出code
A myfunc!对象
B myfunc!get
A myfunc!编译器
A myfunc!io
缘由分析 在34行编译器实现了隐式的拷贝构造 构造出一个A的对象编译