-3

我有一个与以下示例相关的问题:

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' 指针总是指向当前对象吗?非常感谢!

4

2 回答 2

1

B::foo()您调用A::foo()时,传递它this指向对象类型的指针B

在里面A::foo()你调用this->g()的是多态的,它会调用B::g(),因为this里面的指针类型A::foo()B.

于 2013-08-23T12:09:24.573 回答
1

由于 g() 是虚拟的,它在运行时被解析。在运行时,此指针指向 B 的对象,因此调用 B 的 g()

于 2013-08-23T12:09:52.383 回答