簡體   English   中英

C ++中的抽象類和構造函數

[英]abstract classes and constructor in C++

我讀過這個問題“ C ++抽象類:構造函數是或否? ”以及屬於它的答案。

但根據答案,我理解我們需要構造函數來初始化它的數據成員,但是我可以在我的派生類中使用其成員函數(如setter函數)來初始化數據成員,那么為什么定義構造函數很重要?

默認構造函數定義和成員初始化使類自包含有關正確的設置條件(有效狀態)。
對於類客戶端( 包括繼承類 ),使用setter方法來操作類實例是可選的。

您可以考慮添加更多構造函數簽名,客戶端可以使用這些簽名通過單個調用來初始化類成員,並且不要求這些簽名者應用其他setter調用。

這取決於特定的用例,最終更方便和語義正確。

兩個原因:

  1. 確保對象始終處於有效狀態。
  2. 您需要一個復制構造函數來確保正確復制數據(例如,沒有動態分配資源的盲目副本)。

可能更多。

暫無
暫無

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

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