【发布时间】:2012-10-07 05:14:40
【问题描述】:
我试图评估右值引用如何影响类的设计。假设我有一个现有的类,如下所示
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);
}
};
这将允许此类的客户端使用移动语义并防止每次使用一组分配/复制操作。这是一个高度炮制的例子,但相同的原则是否适用于所有类设计,而不会破坏“最小接口”范式。
非常感谢任何对此问题的见解?
【问题讨论】:
标签: c++ interface c++11 rvalue-reference