C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 강좌/문서
C++Builder Programming Tutorial&Docments
[150] C++ 이야기 - [5] 캐스트 연산자 정리
사고뭉치 [prostars] 13276 읽음    2007-10-22 12:13
글의 순서가 조금 이상한가?
각 캐스트 연산자를 소개하는 글이 먼저 올라가고 각 캐스트 연산자를 세부 설명하는 글이 뒤따라 하는 게 일반적인 순서일지도 모르겠다.
그다지 큰 계획을 세우고 쓰는 게 아니다 보니 순서가 조금 이상해도 이해해주기 바란다.
이미 C++ 캐스트 연산자에 대해서 좋은 글들이 많이 나와 있지만 사용하는 사람을 쉽게 볼 수는 없었기에 조금 더 쉽게 하나씩 접근하여 글을 적어보면 도움이 될까 싶어 글을 적어본 것인데 전달이 잘 되었나 모르겠다.

잠시 C 스타일의 캐스트 연산자를 보자.
(타입) 표현식
[예제 1]
const char* pConstCharPtr = "test";
int* pIntPtr1 = NULL;
int* pIntPtr2 = NULL;
int* pIntPtr3 = NULL;

// 모두 캐스팅은 성공하지만 pIntPtr3 에 사용된 방식을 추천한다.
pIntPtr1 = (int*)pConstCharPtr;
pIntPtr2 = reinterpret_cast<int*>( const_cast<char*>( pConstCharPtr ) );
void* pTemp = const_cast<char*>( pConstCharPtr );
pIntPtr3 = static_cast<int*>( pTemp );
[예제 1] 에서 처럼 C 스타일의 캐스트 연산자는 만능이다.
얼핏 봐서는 저 캐스트 연산자가 포인터 타입만을 변환하고 있는지 상수성도 같이 날려버리고 있는지 쉽게 파악하기 어렵다.
C++ 스타일의 캐스트 연산자라면 용도별로 명확하게 사용해야 가능한 캐스팅을 단 한 방에 해결하고 있다.
More Effective C++ 항목 2에서는 C 스타일 캐스트 연산자의 문제를 다음과 같이 언급하고 있다.
C 스타일의 캐스트는 어떤 타입을 다른 타입으로 아무 생각 없이 바꾸어주는 괴물이나 마찬가지라는 것입니다.
const_cast 이야기에서 적은 글을 다시 적어본다.
정해진 용도가 명확한 것이 C++ 캐스트 연산자의 특징 중 하나다.
용도가 명확한 만큼 별도의 주석 없이 코드만으로 작성자의 의도가 쉽게 파악된다.
이런 만큼 C++ 스타일의 캐스트 연산자 사용을 적극 추천한다.

- 참고 자료 소개
2007/10/03 - [프로그래밍과 이것저것] - C++ 이야기 - [1] 캐스트 연산자 const_cast
2007/10/04 - [프로그래밍과 이것저것] - C++ 이야기 - [2] 캐스트 연산자 dynamic_cast
2007/10/14 - [프로그래밍과 이것저것] - C++ 이야기 - [3] 캐스트 연산자 static_cast
2007/10/15 - [프로그래밍과 이것저것] - C++ 이야기 - [4] 캐스트 연산자 reinterpret_cast
http://www.winapi.co.kr 에서 c/c++ 전반적인 내용을 모두 볼 수 있다.

 

- 더하기

블로그에 올렸던 글입니다.

김태선 [cppbuilder]   2007-10-23 11:42 X
좋은 강좌네요. ^^

앞으로도 좋은 강좌 부탁합니다.
이난호 [noirhero]   2007-12-03 01:39 X
좋은 강좌 감사합니다.

+ -

관련 글 리스트
150 C++ 이야기 - [5] 캐스트 연산자 정리 사고뭉치 13276 2007/10/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.