C++類的構造函數及定義


定義一個普通的類時,一定要定義它自己的構造函數。原因有三:第一個原因是編譯器只有在發現類不包含任何構造函數的情況下才會替我們生成一個默認的構造函數,一旦我們定義了一些其他的構造函數,那么除非我們再定義一個默認的構造函數,否則類將沒有默認構造函數。第二個原因是對於某些類來說,合成的默認構造函數可能執行錯誤的操作,比如定義在塊中的內置類型或復合類型(比如數組和指針)的對象被默認初始化,則它們的值將是未定義的。第三個原因是某些編譯器不能為某些類合成默認的構造函數。

 

如何定義構造函數:

定義默認構造函數可以用 classname() = default; 其中=default代表這個函數的作用完全等同於之前使用的合成默認構造函數。我們可以在包含形參的圓括號后加一個冒號和一行代碼來初始化成員初始值,比如 classname(const std::string &s): bookNo(s), units_sold(0) {} 其中冒號后面的是類的成員,成員后括號中的值是賦予的初始值,多個成員之間用逗號隔開。如果編譯器支持類內初始值,我們也可以使用類內初始值來初始化成員,否則我們應該像上面介紹的一樣初始化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM