在下面的代码中,由于没有一个参数是const,我无法理解为什么在以下3个案例中调用第二个重载。
"*"
}
答案 0 :(得分:6)
在所有3个案例中,您正在创建一个临时std::string
,这是一个未命名的对象,一个R值。 R值不允许绑定到非const l值引用(T&
),因此只有重载const std::string& ioValue
才有效。
答案 1 :(得分:-5)
推理是返回类型是第二个函数的std :: string,但第一个函数是void。 std :: cout<< (无效)<< std :: endl不是一组有效的操作。 std :: cout<< (std :: string)<< std :: endl是。如果你返回一个std :: string&从第一个功能你可能会看到#2& #3可能使用你的第一个函数调用。