[CPP] R-value reference &&

https://channel9.msdn.com/Events/Cloud-OS-Launch-Wave/Cloud-OS-Launch-Wave-2013/melting02
1. R-value reference &&를 사용하여

임시 객체를 복사하는대신 이동시켜
빠르고 메모리를 절약할 수 있다.

MemoryBlock 데모

=>

코딩 패러다임 변화

  •  컨테이너에 객체 대신 객체 포인터를 넣을 필요가 없다.
  •  컨테이너를 반환하는 (자연스러운) 코드를 작성할 수 있다.
  1. R-value reference를 제대로 사용하기 위해 std::move 함수가 필요하다.

Person 데모

  1. 템플릿에서 R-value reference를 사용하려면 Perfect forwarding 개념이 필요하다.

유니버셜 레퍼런스(Universal Reference) T&&

일반 함수에서 템플릿 함수로 전달할 때와 템플릿 함수에서 일반 함수로 전달할 때 R-value reference는 R-value reference로, L-value reference는 L-value reference로 전달해야한다. 이를 Perfect forwarding이라하고 std:forward 함수가 필요하다.

[code language="cpp"]

class Person

{

public:

void setName(const string& newName) { _name = newName; }

void setName(string&& newName) { _name = std::move(newName); }

...

}

[/code]

 

=>

class Person

{

public:

template <typename T>

void setName(T&& newName) { _name = std::forward(newName); }

...

}

 

Leave a Reply

Your email address will not be published. Required fields are marked *