2014-03-27 5 views
1

빌더에서 작성된 오브젝트가 있습니다. 몇 가지 일을 한 후에 삭제해야합니다. 하지만, 예외가리소스 획득을 사용하여 작성기 패턴을 구현하는 방법은 초기화입니까?

{ 
    cClass* cc = MyBuilder.build(); 
    // do something usefull, exception may be thrown 
    delete cc; 
} 

을 던져 경우 자바와 같은 C++로 더 마침내 키워드가 없기 때문에 코드가 도달 할 수없는 것, 자원 획득은 초기화 길을 가야하는 것입니다. 권리?

그렇다면 Resource Acquisition Is Initialization을 사용하여 Builder 패턴을 어떻게 구현합니까?

+5

일반적인 답 : shared_ptr/unique_ptr –

답변

3

MyBuilder은 반환 된 포인터 자체에 대한 참조를 보유할지 여부에 따라 unique_ptr 또는 shared_ptr 중 하나를 반환해야합니다. 이것은 원하는 예외 안전성을 제공 할뿐만 아니라 어떤 이유로 든 나중에 작성한 객체를 파괴해야하는 경우도 도움이됩니다.