이번 항목은 이름을에 별명을 지어 줄때 쓰는 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
총평
.. 다시 정리해보니, 재미있다. .. 더 찾아 봐야 될 부분이 많다.
'책 정리 > More Exceptional C++' 카테고리의 다른 글
항목 34 : 전처리 매크로 ( 난이도 : 4 ) (0) | 2008.12.13 |
---|---|
항목 33 : 네스티드 함수 시뮬레이션 (nested function) ( 난이도 : 5 ) (0) | 2008.12.13 |
항목 32 : 재귀적인 선언 ( 난이도 : 6 ) (0) | 2008.12.13 |
항목 40 : 네임스페이스 Part 2 : 네임스페이스로 마이그레이션(migration) (난이도 : 4) (0) | 2008.12.08 |
항목 39 : 네임스페스 Part 1 : using 선언과 using 지시자 (난이도 : 2) (1) | 2008.12.08 |
항목 37 : 전방 선언(forward dclarations) (난이도 : 3) (0) | 2008.12.08 |
항목 36 : 초기화 (변수 초기화, 생성자의 문제점) (난이도 : 3) (0) | 2008.12.07 |
항목 23 : 예외 안전 클래스 설계 Part 2 : 상속 (난이도 : 6) (0) | 2008.12.06 |
항목 22 : 예외 안전 클래스 설계 Part 1 : 복사 지정 연산(copy assignment) (난이도 7) (0) | 2008.12.06 |
항목 21 : 관리되지 않은 포인터 문제 Part2 : auto_ptr은? (난이도 8) (0) | 2008.12.06 |
최근댓글