所以基本上我的问题是:我什么时候应该使用右值引用?在这个例子中,我正在处理一个记录器类(它只是将事情记录到控制台......)。我有不同的功能来记录不同日志级别的消息。他们接受一个 std::string 作为参数。我应该有每个函数的两个版本,第一个用于“正常”引用,第二个用于右值引用?
namespace lnr
{
class logger
{
public:
logger(const string& name);
logger(const string&& name);
~logger() = default;
const void trace(const string& message) const;
const void trace(const string&& message) const;
const void info(const string& message) const;
const void info(const string&& message) const;
const void warn(const string& message) const;
const void warn(const string&& message) const;
const void error(const string& message) const;
const void error(const string&& message) const;
private:
const string name;
};
}
Run Code Online (Sandbox Code Playgroud)
因为用两者记录一些东西是很常见的
logger.trace("Hello");
Run Code Online (Sandbox Code Playgroud)
和
std::string error_message = "..."; …Run Code Online (Sandbox Code Playgroud)