如果在对象创建期间传递多个值,为什么带有一个参数的隐式构造函数会打印最后一个值?

问题描述

我有一个“实体”类。它有一个用户定义的构造函数(隐式),带有一个参数,如下所示。

class Entity
{
public:
    Entity(int a)
    {
        std::cout << a << std::endl;
    }
    Entity(const std::string& s)
    {
        std::cout << s << std::endl;
    }
};

int main()
{
    Entity e1 = (10,20);
    Entity e2 = (10,20,30);
    Entity e3 = (10,30,40);
    Entity e4 = (std::string("Hello"),std::string("World"));
    return 0;
}

上述程序的输出

20  
30  
40  
World

谁能告诉我为什么只打印传递的最后一个值(整数、字符串)?

注意:如果构造函数explicit,那么会出现编译错误。为什么这个输出带有 implicit 构造函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)