我有一个与以下示例相关的问题:
Class A{virtual foo(};virtual g()};
Class B: public A {virtual foo();virtual g()};
B::foo(){A::foo()};
A::foo(){g()};
当我调用B :: foo()时,它将使用B :: g()而不是A :: g(),如何解释它,是因为'this'指针始终指向当前对象?非常感谢!
答案 0 :(得分:1)
在B::foo()
中,您正在调用A::foo()
,并将this
指针传递给指向B
类型的对象。
在A::foo()
内,你正在调用this->g()
,这是多态的,它会调用B::g()
,因为this
内A::foo()
指针的类型是{{1} }}
答案 1 :(得分:1)
由于g()是虚拟的,因此在运行时解析。在运行时,该指针指向B的对象,因此B的g()被称为