다른 클래스의 객체에 boost :: shared_ptrs라는 멤버 변수가있는 C++ 클래스가 있습니다 (dll 프로젝트 내부). 그것들을 클래스 생성자 내부에 할당하거나 별도의 init() 함수를 사용하는 것이 더 낫습니다.생성자, 단위 테스트에서 공유 ptrs (boost) 할당
boost :: shared_ptr 내부의 T에 대한 포인터의 기본값이 NULL이라고 가정합니다. 그래서 생성자 내부에서 아무것도하지 않으면 :: shared_ptr의 get()은 Init() 함수를 호출하기 전에 NULL을 반환합니다.
또한 Init (예외)를 catch해야하거나이 Init() 호출자에게 예외를 잡으라고 알리는 것이 좋은지, 할당 문의 새에서 메모리 할당 문제가있는 경우 어떻게됩니까? boost :: shared_ptr a (새 T);
단위 테스트 내부에서 메모리 할당 예외를 시뮬레이트하는 표준 접근법이 있습니까? 모든 오브젝트가 올바르게 할당 해제 된 것을보십시오
그 답변을 주셔서 감사합니다. Robin, 단위 테스트 중에 참조 횟수를 사용해야합니다. 나는 스텁을 만드는 아이디어를 좋아한다. – Kamal
@Kamal, 컴파일러는 나중에 초기화 된 다른 멤버가 던져지면 초기화 멤버의 소멸자를 호출한다. –