私は、右辺値参照がクラスの設計にどのように影響するかを評価しようとしていました。以下に示すように、既存のクラスがあるとします。
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);
}
};
これにより、このクラスのクライアントは移動セマンティクスを使用できるようになり、使用ごとに1セットの割り当て/コピー操作を防ぐことができます。これは高度に作成された例ですが、「最小限のインターフェイス」パラダイムを破ることなく、すべてのクラス設計に同じ原則が適用されます。
この問題に関する洞察は大歓迎です。