如果在课堂上假设我有两个构造函数
Room()
{
length = 0;
width = 0;
}
&安培;
Room(int value = 8)
{
length = width = 8;
}
现在,如果从主要我打电话使用:
Room obj1;
obj.display();
将调用哪个构造函数或者它会抛出错误?我认为它会抛出错误,因为编译器无法调用正确的构造函数,因为存在两种相同类型的构造函数。这是正确的吗?
答案 0 :(得分:2)
答案 1 :(得分:0)
默认构造函数是一个没有参数的构造函数,或者如果它有参数,所有参数都有默认值。
在这种情况下代码将无法编译...您可以从here
了解有关默认构造函数的更多信息答案 2 :(得分:0)
假设这将是完整的程序
#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);
}
由于对Room
声明obj1
的构造函数的模糊调用,此代码将无法编译。