새로운 C++ 표준에 방금 추가 된 새로운 함수 std :: move()에 대해 궁금합니다. 타입 캐스팅과 std :: move() 사용의 차이점은 무엇입니까?
은 대한 기사를 읽고 완료하고 함수의 정의는namespace std {
template <class T>
inline typename remove_reference<T>::type&& move(T&& x)
{
return x;
}
}
입니다 그것은 표준 : : 이동 전화 및 주조를 사용하는 사이에 차이가없는 것처럼이 보이는 것을 발견했다.
여기 예를 들어,
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;
}
은 바로 기본적으로 차이가 없다고 생각인가? 글쎄, 나는 내가 옳다는 것을 확신하지만 항상 자신감이 항상 역효과를 낸다는 것도 알고있다.
미리 감사드립니다.
고마워요! 이것은 나를 많이 돕는다! –