Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个与以下示例相关的问题:
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' 指针总是指向当前对象吗?非常感谢!
在B::foo()您调用A::foo()时,传递它this指向对象类型的指针B。
B::foo()
A::foo()
this
B
在里面A::foo()你调用this->g()的是多态的,它会调用B::g(),因为this里面的指针类型A::foo()是B.
this->g()
B::g()
由于 g() 是虚拟的,它在运行时被解析。在运行时,此指针指向 B 的对象,因此调用 B 的 g()