func(int data)函数是虚函数,是基类A希望派生类覆盖的函数;func(char* str)函数是普通的成员函数,是基类A希望派生类B直接继承而不要改变的函数。所以输出的结果不同。 请参考《C++中的虚函数简介(上)》 希望能够帮到你
类B继承类A,类A中virtual void func(int data)注意加了virtual,说明这是个虚函数,子类发生了重写,pA=&b;这是父类指针指向子类对象,满足了多态性的发生条件。所以会在执行时发生动态联编,即迟绑定,所以最迟执行的是class B中的func。 而void func(char *str);是没有加virtual的,即发生静态绑定,所以执行时还是调用了父类中的func方法。
楼主啊,你是怎么插图的,为什么我发贴不行,戳的哪里?
第一个是因为C++的多态特性啊
15,440
社区成员
58,167
社区内容
加载中
试试用AI创作助手写篇文章吧