728x90
반응형

unique_ptr 3

[C++] unique_ptr<T> nullptr 비교하기

unique_ptr 는 객체를 비교하거나 nullptr를 비교하는 연산자를 제공해 준다. 이 사실을 알지 못했을 때에는 get()을 사용하여 확인했다. std::unique_ptr str; if (str.get() == nullptr) return; 하지만 unique_ptr 는 bool 타입으로 암시적으로 변화될 수 있다. unque_ptr이 nullptr이면 변환 결과는 false가 되고, 그렇지 않으면 true가 된다. 이를 이용하면 unique_ptr객체의 nullptr 체크를 할 수 있다. std::unique_ptr str; if (str) return; 두 unique_ptr 객체를 비교할 때에는. get() 멤버를 호출해서 비교해야 한다. 이 동작은 shared_ptr에도 마찬가지로 동작한다.

[C++] 스마트 포인터

스마트 포인터는 에 정의되어 있고, RAII 또는 리소스 획득 초기화 프로그래밍 관용구에 매우 중요하다. 스마터 포인터의 목표는 개체의 모든 자원 생성이 한 줄의 코드에서 만들어지고 준비되어 그 개체가 초기화되는 동시에 자원 수집이 발생하는 것을 확인하는 것이다. 이전 포인터 선원과 비교하면 아래와 같다. void UseRawPointer() { Song* pSong = new Song(L"Nothing on You", L"Bruno Mars"); // Use pSong delete pSong; } void UseSmartPointer() { unique_ptr song2(new Song(L"Nothing on You", L"Bruno Mars")); // Use song2 // delete automa..

728x90
반응형