6w4 第六周程式填空題1

2022-03-05 01:43:20 字數 558 閱讀 7901

描述

下面程式的輸出結果是:

a::fun

c::do

請填空:

#include using namespace std;

class a

void do()

};class b:public a

};class c:public b

void do()

};class b:public a

};class c:public b {

public:

void do( )

{ cout << "c::do" 隨便寫了一下就提交了,沒想到能過。

main中call中的實參是c類的引用,但是根據輸出的結果來看,call函式中並不是傳入c類的物件。就三個類,乙個乙個的試也能使出結果來。

之所以填b類的引用是因為b類中有乙個虛函式do()但是沒有fun函式,所以在call中呼叫fun函式是會呼叫b的基類(a類)的fun函式。呼叫do時,因為b類中有乙個do的虛函式,呼叫用的時候會使用到多型的機制,因為傳進來的是c類的物件所以呼叫時呼叫c類中的do函式。

6w4 第六周程式填空題1(虛函式與派生)

總時間限制 1000ms 記憶體限制 65536kb 描述 下面程式的輸出結果是 a fun c do 請填空 include using namespace std class a void do class b public a class c public b int main 輸入無 輸出a...

6w6 第六周程式填空題3

描述 下面的程式輸出結果是 a fun a do a fun c do 請填空 include using namespace std class a virtual void do class b public a class c public b void fun void call 在此處補充...

6w5 第六周程式填空題2

描述 下面程式的輸出結果是 destructor b destructor a 請完整寫出 class a。限制條件 不得為 class a 編寫建構函式。include using namespace std class a class b public a int main 輸入無輸出destr...