选择在c ++ 11中使用哪个重载

时间:2018-03-14 14:28:27

标签: c++11

在下面的代码中,由于没有一个参数是const,我无法理解为什么在以下3个案例中调用第二个重载。

"*"

}

2 个答案:

答案 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可能使用你的第一个函数调用。