일기
2 / 28 객체의 정적, 동적할당
김치진주
2023. 2. 28. 15:03
클래스 안에서 객체를 멤버로 가질 경우, 정적으로 할당하는게 좋을지 동적으로 할당하는게 좋을지 고민을 조금 해봤다.
찾아보기 전 스스로 고민해본 결과는,
동적바인딩 때문에 동적으로 할당한다. 정적으로 선언하면 객체의 다형성을 이용할 수 없으니까.. 그 외의 상황에는 정적으로 선언하는게 좋을 것 같다는 생각이 들었다.
그래서 찾아보니..
- 동적할당은 남발하지 말고, 꼭 필요할 때만 하는것이 좋다고 한다. 동적할당이 꼭 필요한 경우에는 스마트 포인터를 사용하라고 한다.
- 참조자를 사용해라. 객체의 복사본을 전달해도 괜찮다면, 복사본을 넘겨도 좋다.
- 다형성이 필요할 때 동적할당(포인터) 또는 참조자를 사용해라. 가급적이면 포인터보다는 참조자가 좋다.
- 객체가 nullptr을 받는 상황이 필요할 때.
원시포인터를 사용하면 RAII를 통한 리소스 관리가 깨질 수 있다고 하는 것 같은데, 스마트포인터에 대해 더 알아봐야겠다.
(98버전 써야해서 못쓰는 기능이긴 하지만..)
다형성을 이용하려면 반드시 포인터형태여야 되는 줄 알았는데, 레퍼런스여도 된다고 한다.