最新のC++標準に追加された新しい関数std :: move()についてちょっと不思議です。それについての記事を読み終え型キャストとstd :: move()の違いは?
と関数の定義が
namespace std {
template <class T>
inline typename remove_reference<T>::type&& move(T&& x)
{
return x;
}
}
であることが判明し、それは::動きをSTDを呼び出し、キャストを使用しての間に違いはありませんようにこれがそうです。
ここで例えば、
class NPC{
int m_number1;
int m_number2;
public:
NPC() : m_number1(1), m_number2(2) {
cout << "NPC Constructor called!" << endl;
}
NPC(NPC&& _npc) : m_number1(_npc.m_number1), m_number2(_npc.m_number2) {
_npc.m_number1 = 0;
_npc.m_number2 = 0;
cout << "NPC Move Constructor called!" << endl;
}
};
int main() {
NPC n1;
NPC n2 = std::move(n1);
cout << "----------------" << endl;
NPC n3;
NPC n4 = (NPC&&)n3;
return 0;
}
はそれが正しい基本的には差がないことを考えることですか? まあ、私は、私が正しいと確信しているだけでなく、常に自信に満ちていることは、逆風になることも知っています。
ありがとうございます!
ありがとうございます!これは私に多くの助けになります! –