虚函数麻烦

时间:2012-03-03 18:08:28

标签: c++ inheritance virtual

我有两个类:一个是基本的,一个是派生的。也有结构。

struct D;

class A {
  public:
    virtual D Multiply(D one, D two) {
        //realization 
        return result;
    }
    virtual D Pow(D one, D two) {
        result = this->Multiply(one,two); //#1
        return result;
    }
};

class B: public virtual A {
   public:
     virtual D Multiply (D one, D two){
           //realization 
     }
};

Multiply中的功能class A 实现。那么,这段代码好吗?

  B* b = new B();
  b->Pow(one,two);  // #2

A::Multiply调用哪个函数B::Multiply#2?我认为,this #1将指向B-object的A部分。

2 个答案:

答案 0 :(得分:3)

它将调用B :: Multiply,这是基本的OO主体。

答案 1 :(得分:1)

这没有提供B :: Multiply实现,因此您将收到编译错误(Unresolved External) 如果你在B类中编写实现,编译器将调用B :: Multiply