令人困惑的解析錯誤:解開構造函數參數中括號的難題
遇到神秘錯誤訊息「請求成員'function1 '時在「myObj」中,它是非類別類型「MyClass」 ()()'" 在嘗試編譯C 程式時,開發人員可能會發現自己正在思考這個令人困惑的解析錯誤背後的原因。有問題的源代碼包含一個類,其構造函數缺少任何參數,使用以下行聲明:
MyClass myObj();
執行編譯過程時,出現上述錯誤,表明成員函數“function1”不能可通過對象“ myObj」訪問,因為「myObj」被視為非類別類型。為了解決這個問題,程式碼修改為:
MyClass myObj;
這就提出了一個問題:建構函式宣告中缺少參數是否需要省略括號。雖然以前在 C 中使用過使用括號的空構造函數聲明,但語言標準採取了決定性的立場:像所提供的程式碼中那樣的歧義始終得到解決,有利於函數聲明。
值得注意的是在某些情況下,例如在 new 表達式中或構造值初始化的臨時物件時,允許使用空括號初始值設定項。然而,在沒有參數的建構函數宣告的情況下,標準堅決要求省略括號。這可以確保清晰度並防止因語法歧義而可能引起的潛在混亂。
以上是為什麼我不能在沒有參數的建構函式宣告中使用括號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!