在 C 中,建構子用來初始化類別的物件。然而,在提供的程式碼片段中,構造函數並沒有被調用,導致意外的行為。
有問題的行:
Class object();
其實並沒有呼叫 Class 類別的建構子。相反,它宣告一個傳回 Class 物件的函數。要正確呼叫建構函式並建立對象,必須在行後附加分號(;):
Class object;
最初的程式碼片段強調了C 中被稱為「最令人煩惱的解析」的問題。當遇到以下行:
Class object();
時,C 解析器會模糊地將其解釋為函數宣告或帶有空參數清單的函數呼叫。這種歧義通常會導致混亂和意外結果。
要呼叫建構子並建立對象,程式碼應更新為:
#includeusing namespace std; class Class { Class() { cout 運行更正後的程式碼以觀察預期輸出:
default constructor called destructor called
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3