為什麼 C 需要使用者提供的預設建構子來預設建構 const 物件?
C 標準規定,如果一個程式呼叫 const 限定類型的物件的預設初始化時,底層類別類型必須擁有使用者提供的預設建構子。這個要求源自於以下事實:
為了防止這種困境,標準規定不能從缺少 POD 類型建構 const 物件使用者提供的預設建構子。這確保 const 物件始終在創建時初始化。
POD 和非 POD 類別之間的區別
為了澄清,該標準的要求專門適用於非 const 物件-POD 課程。 POD 類別缺乏虛擬函數或基類,並且具有本身就是 POD 的資料成員,即使沒有使用者定義的建構函數,也可以預設初始化。相反,非 POD 類別需要使用者提供的預設建構函數來啟用預設初始化。
說明性範例
考慮以下程式碼片段:
在此範例中,結構體A 的const 物件'a' 可以預設構造,因為A 有一個使用者提供的預設建構函數,滿足標準對非POD 類別的要求。
以上是為什麼 C 類別必須有使用者定義的預設建構函式來預設建構「const」物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!