簡體   English   中英

關於C ++中的繼承和多態

[英]Regarding Inheritance and Polymorphism in C++

我對C ++有幾個一般性的問題,我想知道是否有人可以回答。 我正在編寫一個.cpp文件,其中包含我的老師為我們提供的頭文件的實現。 我們不允許修改文件。 基本上,標題具有基類飛船的聲明和4種特定類型的飛船。 我的問題是:1)基類船的類定義沒有提供構造函數。 相反,它具有受保護的Set函數,用於設置私有數據成員的值。 編譯器是否提供默認構造函數? (基本上會自動將private int變量設置為等於1)嗎? 因為我正在使用new的動態內存功能來創建Ship派生類的對象。

2)我有函數頭虛擬int size(void)const = 0; 在基類船內。 我想在另一個成員函數中使用size()函數來檢查船的大小是否有效。 我會使用this-> size()在成員函數聲明中執行此操作嗎? (我已經在每個特定的派生類的實現中覆蓋了虛函數的大小)

非常感謝你! 請告訴我是否需要添加代碼或更具體。 感謝您的幫助。

1)編譯器是否提供默認構造函數?

通常是的。

(基本上會自動將private int變量設置為等於1)嗎?

否。默認構造函數不會將int成員(私有或其他)設置為任何值。 它們尚未初始化,只有在首次分配給它們之后才能讀取。

因為我正在使用new的動態內存功能來創建Ship派生類的對象。

這與private int的初始化位置無關(即仍然沒有初始化)。

2)我有函數頭virtual int size(void) const = 0; 內基級ship 我想在另一個成員函數中使用size()函數來檢查船的大小是否有效。 我會使用this->size()在成員函數聲明中執行此操作嗎? (我已經在每個特定的派生類的實現中覆蓋了虛函數的大小)

作為初學者,合理的經驗法則是嘗試盡可能簡單地調用函數: size() 只有在這種方法不起作用的情況下,您才可以嘗試this->size() 它可能無法正常工作的原因變得很復雜,但是指南完全是簡單的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM