1
class Foo { int a; int b; int c; std::wstring d; std::vector<char*> e };
에 대한 이동 생성자 (~ 512 바이트) 및 ~ 512 바이트 std::vector
과는 다음과 같이 사용 사례입니다 :C++ - 큰 문자열 가정 클래스 포함하는 문자열
void Test()
{
Foo foo;
DoSomething(std::move(foo)); // DoSomething will stuff it in a long-lived queue
}
는 기본적으로 내가 RAII 년대를 원하는 개체의 수명이 변경됩니다.
이동 생성자와 할당 연산자를 구현하면됩니까? 또는 std::move(..)
을 수행하는 것만으로 충분합니까?
벡터가 실제로 문자열을 보유하고 있지 않습니다. 대부분의 경우 문자열에 대한 포인터입니다. 'Foo'/vector를 복사하면 어떤 경우에도 문자열을 복사하지 않습니다. – user4407569
포인터로 게임을 시작하자마자 [3 ~ 5 규칙] (http://en.cppreference.com/w/cpp/language/rule_of_three)이 적용된다고 가정하십시오 – user4581301