![](/img/trans.png)
[英]C++: which is the appropriate constructor to be called: the constructor or the copy constructor?
[英]C++ which constructor will be called
如果假設在一個類中,我有兩個構造函數
Room()
{
length = 0;
width = 0;
}
和
Room(int value = 8)
{
length = width = 8;
}
現在,如果從主要我打電話給:
Room obj1;
obj.display();
哪個構造函數將被調用或將引發錯誤? 我認為這會引發錯誤,因為由於存在兩種相同類型的構造函數,編譯器將無法調用正確的構造函數,對嗎?
默認構造函數是沒有參數的構造函數,或者如果有參數,則所有參數都具有默認值。
在這種情況下,代碼將無法編譯...您可以從此處閱讀有關默認構造函數的更多信息
假設這將是完整的程序
#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.