我试图评估右值引用如何影响类的设计。假设我有一个现有的类,如下所示
class X
{
string internal;
public:
void set_data(const char* s)
{
internal = s;
}
..
..
..
//other stuff
};
此类由另一个模块使用,如下所示:
//another module
{
string configvalue;
X x;
//read configvalue from a file and call set
...
x.set_data(configvalue.c_str());
//use x to do some magic
..
...
}
有了右值引用,像这样提供另一个成员函数会更好吗
class X
{
...
...
....
void set_data(string s)
{
internal = std::move(s);
}
};
这将允许此类的客户端使用移动语义并防止每次使用一组分配/复制操作。这是一个高度编造的示例,但相同的原则是否适用于所有类设计,而不会破坏“最小接口”范式。
非常感谢任何人对此事的见解?