은 내가 그들에게 CONST (가 복사 될 것이다) 좌변과 (속도)를 rvalue 참조C++은 함수에 const를 좌변과를 rvalue 참조를 가지고
struct Object {
...
Object(Object&& o) { ... }
Object(const Object& o) { ... }
...
};
...
struct SomeClass {
...
Object arr[7];
void copy(int pos,const Object& o) { arr[pos] = o; }
void copy(int pos,Object&& o) { arr[pos] = o; }
...
};
에 의해 변수를 취할 수있는 능력을 제공해야 할 몇 가지 방법이
따라서 SomeClass에서는 두 가지 복사 방법이 완벽하게 동일합니다. 유일한 차이점은 하나의 Object가 복사 될 const로 전달되고 다른 Object는 rvalue 참조로 빠른 복사를 위해 소비되도록 전달된다는 것입니다.
이 두 코드의 코드는 완전 동일합니다.
이제 위의 예에서 비극적 인 것은 아니지만 조금 더 큰 9-15 줄 정도의 방법이 있습니다. 해결 방법은 분명히 여기에서했던 것처럼 복사하는 것입니다.하지만 옳다고 생각하지는 않습니다.
복사 방법 코드는 어떻게 재사용 할 수 있습니까?
값을 인수로 취하고 함수 내에서'std :: move'를 취할 수 있습니다. – Praetorian
음, Object 클래스는 rvalue 참조 생성자를 사용하여 객체의 멤버 변수를 "훔치거나"지정된 객체에 아무 것도 남겨 두지 않습니다. const Object 생성자는 객체를 수정할 수 없으며 변수를 훔칠 수도 없으므로 복사해야합니다. –
@Praetorian 그건 좋은 생각이야. 나는 아무것도 복사하지 않고 다른 방법을 찾지 못하면 아마 그것을 사용할 것이다. –