Constantness
class MyClass {
// ...
private:
std::string m_parameter;
// ...
}
Pass-by-value:
void MyClass::SetParameter(std::string parameter)
{
m_parameter = parameter;
}
Pass-by-ref:
void MyClass::SetParameter(std::string& parameter)
{
m_parameter = parameter;
}
Pass-by-const-ref:
void MyClass::SetParameter(const std::string& parameter)
{
m_parameter = parameter;
}
Pass-by-const-value:
void MyClass::SetParameter(const std::string parameter)
{
m_parameter = parameter;
}
Pass-by-universal-ref:
void MyClass::SetParameter(std::string&& parameter)
{
m_parameter = parameter;
}
Pass-by-const-universal-ref:
void MyClass::SetParameter(const std::string&& parameter)
{
m_parameter = parameter;
}
Which variant is the best (possibly in terms of C++11 and its move semantics)?
PS. May be bodies of the functions is in some cases incorrect.