我有两个类:一个是基本的,一个是派生的。也有结构。
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部分。
答案 0 :(得分:3)
它将调用B :: Multiply,这是基本的OO主体。
答案 1 :(得分:1)
这没有提供B :: Multiply实现,因此您将收到编译错误(Unresolved External) 如果你在B类中编写实现,编译器将调用B :: Multiply