idiom

    C++ Copy and Swap idiom

    C++에선 클래스가 리소스를 관리하고 클래스의 생성/소멸에 맞춰 리소스를 할당/해제한다. 관련된 멤버 함수와 그 역할은 아래와 같다. 생성자: 리소스를 할당한다. 복사 생성자: 리소스를 복사해온다. 복사 대입 연산자: 기존 리소스를 해제하고 리소스를 복사해온다. (C++11부터) 이동 생성자: 리소스를 가져온다. (C++11부터) 이동 대입 연산자: 기존 리소스를 해제하고 리소스를 가져온다. 소멸자: 리소스를 해제한다. Copy-and-swap idiom은 간결하면서도 강력한 예외 안정성(strong exception safety)을 보장해주는 복사 대입 연산자를 짤 수 있게 해준다. 또한 이동 대입 연산자에를 짤 때에도 유용하다. 문자열 리소스를 관리하는 간단한 클래스를 생각해보자. class Foo ..