在 C 中,建構子用於初始化類別的物件。然而,在提供的程式碼片段中,構造函數並沒有被調用,導致意外的行為。
有問題的行:
Class object();
實際上並沒有呼叫 Class 類別的建構子。相反,它宣告一個傳回 Class 物件的函數。要正確呼叫建構函式並建立對象,必須在行後附加分號(;):
Class object;
初始程式碼片段突出顯示一個被稱為C 中「最令人煩惱的解析」的問題。當遇到以下行時:
Class object();
C 解析器會模糊地將其解釋為函數宣告或帶有空參數列表的函數呼叫。這種歧義通常會導致混亂和意外結果。
要呼叫建構函式並建立對象,程式碼應更新為:
#include <iostream> using namespace std; class Class { Class() { cout << "default constructor called"; } ~Class() { cout << "destructor called"; } }; int main() { Class object; // Correctly invokes the constructor }
執行修正後的程式碼以觀察預期輸出:
default constructor called destructor called
以上是為什麼 `Class object();` 不建立 C 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!