2009년 03월 20일
STL : 컨테이너에 동적할당 객체 담기
만약, 서로 다른 타입의 객체를 하나의 컨테이너에 담고 싶다면,
보통, 동적 할당된 객체의 포인터를 저정할 것 이다.
그러나, 포인터로 선언된 변수명을 사용하는 대신,
아래와 같이 포인터 요소만을 이용하여 저장해라.
class Base {};
class Derived : public Base{};
std::vector <Base *> vNice;
vNice.push_back(new Derived);
vNice.push_back(new Base);
위와 같이 한다면, 포인터에 접근하는 유일한 방법이 컨테이너(vNice)를 통해서만 가능하는 것을 명확히 할 수 있다.
또한, 힙 메모리에 할당된 객체를 삭제하려면 아래와 같이 해야 함을 명심하라.
delete vNice[0];
delete vNice[1];(참고)
댓글을 달아주신 분의 글도 있고 해서.. 첨부를 합니다.
이 방법 안 쓰는게 좋습니다.
사실 이렇게 쓴다는 것 조차 상상도 못했는데, 재밌길래 올렸습니다.
주위 분들이 "너는 머리가 참으로 좋은 것 같아" 라고 한다면 써도 될지도.. (그래도 협업할 때 욕 먹긴 하겠지만.ㅋㅋ)
출처 : http://www.devx.com/cplus/Article/16328/0/page/6
번역 : 너굴너굴
# by | 2009/03/20 15:17 | nUgURi_GURU | 트랙백 | 덧글(3)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
.....딱히 제가 그랬다는건 아닙...(코가 길어진다)
이 방법 안 쓰는게 좋죠.
아니... 쓰면 뭐 될 수도 있겠죠. ^^;;;
그리고...
벡터에 객체를 담을 때, 메모리의 증가량 때문에 객체를 담지 말고 무조건 포인터를 만들어 담으라는데... 객체를 담으면 실제 사용량이 많다는 논리인데...
아직, 정답을 모르겠습니다.
그냥 편하게 그냥 객체를 담고 있지용 ㅋㅋ
댓글 감사합니다. ^^