별빛의 낙하지 :: [C++0x] Move Operator

[C++0x] Move Operator

C++ 2012. 11. 16. 00:20 Posted by byulbit
/*
	Move Constructor( 이동 연산자 )

	c++0x 에는 기존의 대입연산자에 이어서, 이동 연산자도 추가가 되었다.

*/

#include 

class MoveClass
{
public:
	// Default Constructor
	MoveClass() {
		std::cout << "Default Constructor Call" << std::endl;
	}
	
	// Copy Operator
	void operator=(MoveClass& a) {
		std::cout << "Copy Operator Call" << std::endl;
	}

	
	// Move Operator
	void operator=(MoveClass&& a) {
		std::cout << "Move Operator Call" << std::endl;
	}
};


// 값이 복사되는 곳에서는 일반적으로 복사 생성자가 호출된다.
MoveClass foo(MoveClass& a)
{
	MoveClass local;
	return local;		// 값이 복사 되는데, 우선순위가 존재한다.
						// MoveClass(const MoveClass& a) 형태의 복사 생성자가 존재하고,
						// MoveClass(MoveClass&& a) 형태의 이동 생성자가 존재하면
						// 이동 생성자를 호출한다.
}

int main()
{
	MoveClass a;			// Default Constructor Call
	MoveClass b;
	a = b;					// Copy operator Call
	
	a = std::move(b);		// move Operator Call

}

'C++' 카테고리의 다른 글

STL 요소 만들어보기(1)  (0) 2012.11.16
[C++] template을 사용하여 연결리스트 구현  (0) 2012.11.16
[C++0x] Move Constructor  (0) 2012.11.15
[C++] C++ name decoration 혹은 name mangling  (0) 2012.11.13
[C/C++] switch의 jump table  (0) 2012.11.07