Ala*_*lan 50
如果您尝试从基类指针调用虚方法,是的.
这是多态性.
如果您要求使用指向派生类的基类指针,您是否可以调用派生类重写的基类方法?是的,通过显式确定基类名称也可以:
basePtr->BaseClass::myMethod();
el.*_*ado 16
尝试:
class A { virtual void foo(); }
class B : public A { virtual void foo(); }
A *b = new B();
b->A::foo ();
Run Code Online (Sandbox Code Playgroud)
CB *_*ley 10
你的意思是这样的.(pBase指向基类型的类型,但指向的对象实际上Derived是派生自的类型Base.)
pBase->Base::method();
Run Code Online (Sandbox Code Playgroud)
是的,这是可能的.
Jer*_*fin 10
是 - 您必须指定全名:
#include <iostream>
struct base {
virtual void print() { std::cout << "Base"; }
};
struct derived : base {
virtual void print() { std::cout << "Derived"; }
};
int main() {
base *b = new derived;
b->base::print();
delete b;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我正确理解了这个问题,你就有了
class B
{
public:
virtual void foo();
};
class D: public B
{
public:
virtual void foo();
}
B* b = new D;
Run Code Online (Sandbox Code Playgroud)
问题是,你能打电话吗B::foo()?答案是肯定的,使用
b->B::foo()
Run Code Online (Sandbox Code Playgroud)