我有一個問題(我家庭作業的一部分),它不確定代碼的行爲。C++繼承函數覆蓋
我得到了一個class Father
,它擁有一個函數「A」,函數「A」打印出「Hello Father」。
我得到了第二課 - >class son:public Father
,它不具有功能「A」。
我得到了第三課 - >class grandson:public son
,它擁有打印「你好孫子」的功能「A」。
功能「A」不是虛擬的。 請忽略編譯錯誤,我不想在這裏放80行代碼。
我有另一個功能:
void justPrint(const son& a) {
a.A;
}
現在,將在下面的電話進行打印:
grandson jeff;
justPrint(jeff);
我有點糊塗了,兒子不具備打印功能( A),所以他假設打電話給父親:: A(兒子是父親..)
但是,我們發送傑夫(孫子)的功能,接收兒子..和孫子是兒子..
我認爲它會打印
「你好父」
但我很困惑...將appericiate任何幫助和explenation ..
第二件事, 如果我將進行以下呼叫會發生什麼情況:
justPrint(1);
您是否嘗試過這些看到真正的輸出? – billz
其實所描述的'justPrint'函數不會編譯 - 或者至少它不會調用函數'A'。而'justPrint(1)',假設只有上面的函數也不會編譯(因爲'1'不是一個有效的類'子對象)。 –
爲了能夠回答這個問題(忽略上面提到的錯誤),我們需要知道父類中的函數'A'是否是虛擬的。 –