微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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 举报,一经查实,本站将立刻删除。