【发布时间】:2012-12-26 15:37:17
【问题描述】:
这个问题类似,但是是关于从类内部调用函数:Can I call a base class's virtual function if I'm overriding it?
在这种情况下,您应该指定Base::function() 而不是function(),这将调用被覆盖的定义。
但是有没有办法在课堂之外做到这一点?我的类没有定义复制构造函数,所以我不知道如何转换为基类:
Base( derived_object ).function()
将& derived_object 转换为Base* 然后调用->function() 是否合适?
感谢您的洞察力。
【问题讨论】:
-
static_cast可能会起作用,尽管我不确定 - 虚函数的重点是它们在运行时被解析,与对象的编译时间类型无关。dynamic_cast肯定不会起作用. -
您为什么要这样做?如果函数是派生类的一部分,也是基类的一部分,那么当你调用基类时你可能做错了什么。解决这个问题的更好方法是在基类中创建一个单独的函数,以便由派生类调用,并让基类自己调用该函数。
-
请参阅下面对@Omnifarious 的评论。