関数呼び出しがあります
class MyClass {
static std::string getName(void) {
return getMyName(void); // Returning by value as well
}
};
クラスのコンストラクターでこの関数を使用すると
class AnotherClass {
public:
AnotherClass(void) :
m_name(std::move(MyClass::getName())) {} // 1. std::move used
const std::string& name(void) const { // 2. Should I use std::string&& (without consts)
// .... but I also need to make sure value cannot be changed (e.g, name() = "blah";)
// if std::string&& will be used should I use it simply by calling name() to call function using move or should I leave it as is?
return m_name;
}
private:
std::string m_name;
}
これは移動セマンティクスの正しい使用法ですか? 関数が移動セマンティクスを使用していることを確認するにはどうすればよいですか?
セマンティクスを移動することで効率を実装することを学ぼうとしているので、ばかげた質問であれば申し訳ありません。
確認しました
http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html
これは C++ の「移動」セマンティクスの正しい使用法ですか?
素晴らしい説明ですが、関数が移動セマンティクスを使用しているかどうかを確認するための明確化が必要です。