簡體   English   中英

C ++哪個構造函數將被調用

[英]C++ which constructor will be called

如果假設在一個類中,我有兩個構造函數

Room()
{
length = 0;
width = 0;
}

Room(int value = 8)
{
length = width = 8;
}

現在,如果從主要我打電話給:

Room obj1;
obj.display();

哪個構造函數將被調用或將引發錯誤? 我認為這會引發錯誤,因為由於存在兩種相同類型的構造函數,編譯器將無法調用正確的構造函數,對嗎?

call of overloaded 'Room()' is ambiguous

所以不會被編譯

在此處輸入圖片說明

您可以使用鍵盤作為在線編譯器

默認構造函數是沒有參數的構造函數,或者如果有參數,則所有參數都具有默認值。

在這種情況下,代碼將無法編譯...您可以從此處閱讀有關默認構造函數的更多信息

假設這將是完整的程序

#include <iostream>
struct Room
{
    int length;
    int width;
    Room()
    {
        length = 0;
        width = 0;
    }
    Room(int value = 8)
    {
        (void)value;
        length = 8;
        width = 8;
    }
};
int main()
{
    Room obj1; // ambiguous call
    std::cout << obj1.length << "\n";
    return (0);
}

由於為obj1的聲明對Room的構造函數的調用不明確,因此無法編譯此代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM