中望一面
更新:已约8.30二面
----------------------------------------------
A派生B,B派生C,C派生D,每一层都重写了A里面的虚函数。一个D指针指向D对象,能不能通过这个指针调用B里面实现的虚函数?
我觉得不行吧
。
----------------------------------------------
A派生B,B派生C,C派生D,每一层都重写了A里面的虚函数。一个D指针指向D对象,能不能通过这个指针调用B里面实现的虚函数?
我觉得不行吧
全部评论
子类是继承父类的虚表的,所以子类肯定可以访问(要有权限)父类的虚函数的,d->B::fun()就可以了。
麻烦的是一个指向B对象的B指针如何调用D的虚函数,这个问题就变了很多了,不在类里面做一些手脚是无法直接调用的,比如CRTP模式。
这样: ((B) (*D_ptr) ).func()
好像能够用::调 似乎在primer里面看到过
同学请问一下约完多久收到邮件链接呢,hr跟我约的30号一面,没给发邮件
草,我今天就是这个问题,我说了::这个,不知道对不对
虽然我看到这个问题也不知道有哪些方法可以调用,但是我感觉是可以调用的,因为类的继承是成员函数的调用权限继承和成员变量的内存继承,子类继承父类的调用权限之后,如果在子类作用域之内重载虚函数就是重写/覆盖,如果出现与虚函数同名的函数就是隐藏,但是隐藏的函数一样可以调用,就是用作用域运算符强制调用,所以我感觉是可以的。
不行吧,感觉是基类的指针或者引用绑定派生类对象才能实现动态多态
base哪里的
d指针指向d类对象,调用的肯定是d重写的虚函数啊,如果是指向b类对象,还有的讨论
相关推荐
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~


点赞 评论 收藏
分享
