【问题标题】:ambiguous function call in children class C++子类 C++ 中的模棱两可的函数调用
【发布时间】:2013-08-23 12:07:02
【问题描述】:

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

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

【问题讨论】:

  • -1 用于糟糕的代码。

标签: c++ ambiguous


【解决方案1】:

B::foo() 中,您正在调用A::foo(),将this 指针传递给它,该指针指向B 类型的对象。

A::foo() 内部,您调用的是多态的this->g(),它将调用B::g(),因为A::foo() 内部的this 指针类型是B

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2011-11-24
      • 2017-05-15
      • 2014-10-21
      • 1970-01-01
      相关资源
      最近更新 更多