中望一面

更新:已约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 陕西

相关推荐

仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
评论
5
23
分享

创作者周榜

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