[英]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.