繁体   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