我有一个字符串类。一些运算符返回引用,其他运算符返回值。只有返回值的才能利用右值复制构造函数或右值赋值运算符。
我希望在对右值的引用上调用右值运算符。
鉴于这些:
String(const TCHAR* sz);
String(const String& s);
String& operator+=(const TCHAR* sz);
String& operator=(String&& r);
而这段代码:
String x;
x = (String("fred") += "foo");
它调用复制构造函数 += 运算符,然后再次调用 COPY CONSTRUCTER。我希望它调用右值赋值运算符!
我添加了这个:
String(String&& r)
这没有什么区别。
编辑: 我确认如果我让我的 += 运算符返回一个值,将调用右值赋值运算符。我已经做了很多性能测试,这样做会使一切都变慢。