中望一面

更新:已约8.30二面
----------------------------------------------

A派生B,B派生C,C派生D,每一层都重写了A里面的虚函数。一个D指针指向D对象,能不能通过这个指针调用B里面实现的虚函数?

我觉得不行吧
全部评论
子类是继承父类的虚表的,所以子类肯定可以访问(要有权限)父类的虚函数的,d->B::fun()就可以了。 麻烦的是一个指向B对象的B指针如何调用D的虚函数,这个问题就变了很多了,不在类里面做一些手脚是无法直接调用的,比如CRTP模式。
4 回复 分享
发布于 2023-08-25 09:02 浙江
这样: ((B) (*D_ptr) ).func()
2 回复 分享
发布于 2023-08-23 18:10 广东
好像能够用::调 似乎在primer里面看到过
2 回复 分享
发布于 2023-08-21 20:15 北京
同学请问一下约完多久收到邮件链接呢,hr跟我约的30号一面,没给发邮件
1 回复 分享
发布于 2023-08-30 00:50 四川
草,我今天就是这个问题,我说了::这个,不知道对不对
点赞 回复 分享
发布于 2023-09-14 23:09 江苏
虽然我看到这个问题也不知道有哪些方法可以调用,但是我感觉是可以调用的,因为类的继承是成员函数的调用权限继承和成员变量的内存继承,子类继承父类的调用权限之后,如果在子类作用域之内重载虚函数就是重写/覆盖,如果出现与虚函数同名的函数就是隐藏,但是隐藏的函数一样可以调用,就是用作用域运算符强制调用,所以我感觉是可以的。
点赞 回复 分享
发布于 2023-08-26 16:23 北京
不行吧,感觉是基类的指针或者引用绑定派生类对象才能实现动态多态
点赞 回复 分享
发布于 2023-08-23 16:57 辽宁
base哪里的
点赞 回复 分享
发布于 2023-08-21 18:03 广东
d指针指向d类对象,调用的肯定是d重写的虚函数啊,如果是指向b类对象,还有的讨论
点赞 回复 分享
发布于 2023-08-21 17:49 陕西

相关推荐

10-09 09:19
已编辑
沈阳农业大学 C++
修订
丿南烟丶:个人评价可以删掉 两个项目都是轮子项目,把一个转换成应用型项目,把MySQL和redis用起来 另外项目的时间可以标明一下
最后再改一次简历
点赞 评论 收藏
分享
阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
评论
5
23
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务