中望一面
更新:已约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类对象,还有的讨论
相关推荐
05-21 23:00
重庆大学 
点赞 评论 收藏
分享