이번 항목은 이름을에 별명을 지어 줄때 쓰는 typedef 에 대한 이야기이다. 저번 Exceptional C++ 에서 다루지 않았던 내용이라 새로웠지만, Effectivce C++ 에서 다루었던 내용이고, 평소에 그 유용성과 좋지 않을 때를 알고 있떤 터러, 정리 차원에서 다시 정리한다.

질문 1.

typedef를 사용하는 이유는? 생각나는 대로 이유/상황을 적어 보자.


질문 2.

STL 컨테이너를 사용하는 코드에서 typedef를 사용하면 왜 좋을까?



해설

질문 1 typedef를 사용 하는 이유는?

우선 코드가 짦아져서 좋고, 함수 포인터 등을 쓰려고 할 때 편하며, 또한 템플릿 클래스에 사용하기 용이하며, 한가지 타입을 한번에 변환하고자 할때 편하다. 그리고 그 타입에 대한 의사 전달에 가능하다.

이것은 클래스 내부에서 쓰일 때 아주 요기나게 사용 될 수 있다.

위에서 언급했던 데로 한가지 타입을 한번에 모든 내용을 변환하고자 할 떄 편하다고 지적했었는데, 이것은 호환성을 높여주기도 한다.

예를 들자면 __int32 를 Int32 로 정의하고. __int64 를 Int64로 정의하면서 혹시나 모를 경우에 대해서 대비 할수 있게 해 준다.


질문 2 STL 컨테이너에 어떻게 좋을까?

알다시피 컨테이너는 Squences 컨테이너는 push_back 등 동일한 인터페이스를 제공해 주고, Associative 컨테이너는 insert 등의 동일한 인터페이스를 제공해 준다. 물론 차이는 다소 있지만, 각 용도에 맞게 컨테이너를 변경하고자 할때, 우수준순 처럼 깔려 있는 코드를 다 수정하기 보다, typedef 로 정해둔 그 부분만 수정하고, 나머지 부분을 조금씩 수정하는 좋은 방법을 쓸 수 있따.


하지만 장점이 있다면, 단점이 있듯이, 다음과 같은 문제점들이 있다.

항목 6: typedef, 포인터 가지고 장난 치지 마라.
http://www.ikpil.com/447

항목 7: typedef가 문자적으로만 줄여 준다고 생각하지 마라.
http://www.ikpil.com/491

항목 16: new 및 delete를 사용할 때는 형태를 반드시 맞추자
http://www.ikpil.com/425


총평

.. 다시 정리해보니, 재미있다. .. 더 찾아 봐야 될 부분이 많다.


posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요