天天看點

C++實踐參考——存儲班長資訊的學生類

【項目 - 存儲班長資訊的學生類】

(1)上面是聲明好的類及測試函數,請完成類中成員函數的定義,使運作結果如圖所示。

C++實踐參考——存儲班長資訊的學生類

(2)将stu類的資料成員的通路權限改為private,你的程式是否能完成要求的功能?如果不行,請修改程式。請不要修改給出的代碼,隻能修改自己寫的代碼。 

[參考解答]

(1)

(2)當stu類的資料成員通路權限改為private後,39和40行通路基類的私有資料成員,出錯是必然的。

||=== example, debug ===|

f:\c++\codeblock\example\main.cpp||in member function 'void studetail::show()':|

f:\c++\codeblock\example\main.cpp|10|error: 'int stu::num' is private|

f:\c++\codeblock\example\main.cpp|39|error: within this context|

f:\c++\codeblock\example\main.cpp|11|error: 'std::string stu::name' is private|

f:\c++\codeblock\example\main.cpp|40|error: within this context|

||=== build finished: 4 errors, 0 warnings (0 minutes, 0 seconds) ===|

改法1:

  再改回去!基類中的資料成員用protected的做法是一般的做法。

  既然現在“搗亂”,也不這樣做了。

改法2:

  在基類stu中,增加兩個公用的get函數,在子類中通路時,輸出get函數的結果。注意9、10行加的函數,以及41、42行改過的輸出。

改法3:

  注意到基類stu中已經提供了顯示的display函數,是公共的,派生類中當然可以直接通路了。于是,在studetail::show函數中調用就行了。注意下面程式的第39行:

繼續閱讀