JavaGUI佈局管理器
阿新 • • 發佈:2021-07-21
今天在菜鳥教程上學習了C++的繼承,有一點收穫。
首先,是概念的學習。被繼承的類叫做基類,繼承的類叫做派生類,使用語法是:
class Derivation:Access-Specifier Base{};
Access-Specifier是訪問修飾符,分為private,protected和public,預設是private。
實際程式設計中,遇到的第一個問題為:XX does not have any field named 'YY';這個問題發生在用派生類的構造方法的初始化列表去初始化基類的成員,在網上搜了一下原因,發現編譯器對初始化列表和構造方法的執行順序為:基類的初始化列表->基類的構造方法->派生類的初始化列表->派生類的構造方法。所以很可能是編譯器不允許對變數進行二次初始化,為了解決這個問題,就沒有使用初始化列表,而是在派生類的建構函式中對基類的成員變數賦值。整個過程可以看作是首先由基類對這些變數進行了初始化,賦了一個預設的初始值,然後再由派生類來對其賦值。
第二個問題為:error of deleted function,這個問題是我在建立派生類後,沒有加含參的建構函式,因為我以為建立的派生類物件可以由基類的含參建構函式來初始化。實際上,派生類不繼承基類的建構函式、拷貝建構函式、解構函式、過載運算子和友元函式。因此,需要顯示地在派生類中新增含參建構函式。