我有2個類:一個基本和一個派生。也有結構。虛擬功能故障
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對象的A部分。
當你嘗試過什麼事? – 2012-03-03 18:11:58
可能沒有任何事情發生,因爲Multiply是私人的。 – ipc 2012-03-03 18:13:01
對不起,所有功能都是公開的,我錯過了這個 – gaussblurinc 2012-03-03 18:15:50