c++基础的继承和重载例子

三月半和蒲公英 2019-04-30 10:46:10
以下代码运行结果是'AA'
我以为:
- B继承自A,重定义了函数show,指针指向B的对象b时,应该调用B的show方法啊
看起来这是不对的,那么我错在了哪里呢?
烦请指点
```
#include<iostream.h>
class A{
public:
void show(){ cout<<"A"; }
};
class B:public A {
public:
void show(){ cout<<"B"; }
};
main()
{ A a,*pc;
B b;
pc=&a; pc->show();
pc=&b; pc->show();
return 0;
}
```
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
日落西山红 2019-05-27
  • 打赏
  • 举报
回复
你这个没应用到虚拟函数响应机制,你的是静态调用,调用类型为指针的类型,在运行时就已经确定类型了,而你要预期基类的指针指向子类时,调用子类函数,要引入虚函数,这个机制是在运行期间,又绑定在指针的类型决定运行
栖凤林 2019-05-03
  • 打赏
  • 举报
回复
加上虚函数virtual就好啦
stherix 2019-04-30
  • 打赏
  • 举报
回复
你A里面的show()又没定义为虚函数 要加上virtual
  • 打赏
  • 举报
回复
这是由C++静态联编机制造成的。对于上面的程序,静态联编机制首先将基类对象的指针pc与基类的成员函数show()连接在一起,这样,不管指针pc指向哪个对象,pc->show()调用的总是基类中的成员函数show()。为解决这一问题,C++引入了虚函数的概念
marslycan 2019-04-30
  • 打赏
  • 举报
回复
你这不是多态的正确写法
yuanlai_ 2019-04-30
  • 打赏
  • 举报
回复
多态三个条件: 公开继承 虚函数,子类覆写父类虚函数 子类对象或引用赋给父类
走好每一步 2019-04-30
  • 打赏
  • 举报
回复
你A的Show又不是虚函数,没有虚函数表,是不会动态链接的

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧