基类的指针,如果指向子类,调用同名函数,调用的是基类的还是子类的?

screen12 2017-03-06 09:14:53
如果有一个基类class BASE,定义了一个函数(不是虚函数)

子类class CHILD中又对这个函数进行了定义(是同名同参数,不是重载)

那么我用一个指出基类的指针BASE *p,指向子类对象 p = &child;

那么我调用child中的一个函数是,调用的是子类的函数,还是基类中的函数?
...全文
538 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pingo520 2017-03-06
  • 打赏
  • 举报
回复
这种问题,自己写几行代码,测试一下就OK了,对于编程学习,能动手的尽量不动口
paschen 版主 2017-03-06
  • 打赏
  • 举报
回复
引用 4 楼 screen12 的回复:
[quote=引用 3 楼 sinat_24820331 的回复:] 不好意思记错了. 重定义,这种情况下定义的基类指针,调用基类的函数. 如果不定义成基类指针 则调用子类的函数.
那么怎样让它调用的是子类的函数吗?是在基类中定义成虚函数就行了吗? [/quote] 是的,定义成虚函数
paschen 版主 2017-03-06
  • 打赏
  • 举报
回复
那调用的是基类的,不是虚函数是没有多态行为的
xiaohuh421 2017-03-06
  • 打赏
  • 举报
回复
没有指定虚函数, 那么它就只能访问到类型对应的函数 基类指针就只能访问到基类函数 子类指针就只能访问到子类函数 要使用基类访问到子类的函数, 最符合常规的, 就是虚函数了. 当然, 你也可以使用非常规的, 比如强制转换, 比如自己计算函数地址并调用.
screen12 2017-03-06
  • 打赏
  • 举报
回复
引用 3 楼 sinat_24820331 的回复:
不好意思记错了. 重定义,这种情况下定义的基类指针,调用基类的函数. 如果不定义成基类指针 则调用子类的函数.
那么怎样让它调用的是子类的函数吗?是在基类中定义成虚函数就行了吗?
瓜枣三郎 2017-03-06
  • 打赏
  • 举报
回复
不好意思记错了. 重定义,这种情况下定义的基类指针,调用基类的函数. 如果不定义成基类指针 则调用子类的函数.
screen12 2017-03-06
  • 打赏
  • 举报
回复
引用 1 楼 Saleayas 的回复:
基类中的函数。
那么怎样才能让指同子类的指针,调用的是子类中的函数呢?也就是实现多态呢? 是不是在基类中,把这个函数定义成虚函数?
Saleayas 2017-03-06
  • 打赏
  • 举报
回复
基类中的函数。

65,187

社区成员

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

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