首頁 > 後端開發 > C++ > 為什麼 `Class object();` 不建立 C 物件?

為什麼 `Class object();` 不建立 C 物件?

Susan Sarandon
發布: 2024-12-18 11:04:10
原創
714 人瀏覽過

Why Doesn't `Class object();` Create a C   Object?

理解建構子呼叫的缺失

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板