如何在没有多态效应的情况下调用虚方法?

gre*_*man 5 c++ methods polymorphism virtual

我参考了ref:

Foo &ref = ..
Run Code Online (Sandbox Code Playgroud)

我想调用一个ref.say()定义为虚拟的方法,Foo我知道它确实在子类中被覆盖(因为我也写了它们).

但是我想称say它好像不是多态的,所以在Foo中定义的版本,而不是在子类中.

怎么做?

我想到的一件事是指针ref,而不是取消引用它,这个技巧应该杀死多态,但我不确定这是否能保证取得预期的效果.

请注意,我不是坐在Foo或其任何一个孩子里面,Foo树是我当前POV的外部结构.

Luc*_*ore 8

怎么样

ref.Foo::say();
Run Code Online (Sandbox Code Playgroud)

这就是你要找的?

  • @greenoldman之前你可能已经看过像`Base :: foo()`之类的用法来调用base的实现.这实际上只是意味着`this-> Base :: foo()`,因为`this`是隐含的. (2认同)