문제제기:
goto, cast<형변환>에 의한 사태 악화을 개선하기 위한 문제 제기.
착안점 :
ㅇ C 스타일의 캐스트 문제점
1) 어떤 타입을 다른 타입으로 아무 생각없이 바꾸어주는 괴물적 존재
2) 눈으로 찾아내기 힘들다. grep과 같은 도구를 쓰더라도 구분하기 힘들다.
ㅇ C++ 의 네 가지 연산자
1) static_cast / const_cast / dynamic_cast / reinterpret_cast
해결점 :
C++에 정의된 cast 타입을 사용하자.
ㅇ static_cast
ㅇ const_cast
ㅇ dynamic_cast
ㅇ reinterpret_cast
자세한 내용
ㅇ http://tingcobell.tistory.com/19
ㅇ C++ Language Tutorial : Type Casting http://www.cplusplus.com/doc/tutorial/typecasting.html
요약 :
ㅇ static_cast < 타입 >(표현식)
- C 스타일의 캐스트와 똑같은 의미와 형변환 능력을 가지고 있고, 기본적인 캐스트 연산자
- 제약도 그래로
1) static_cast는 원래 가지고 있는 상수형(constness)을 떼어버리지 못한다.( C 스타일은 가능 )
ㅇ const_cast
- 표현식의 상수성이나 휘발성( volatileness)을 없애는데 사용
ㅇ dynamic_cast
- 상속 계층 관계를 가로 지르거나 하향시킨 클래스 타입으로 안전하게 캐스팅 할때 사용
- 기본 클래스의 객체에 대한 포인터나 참조자의 타입을 파생(derived) 클래스 혹은 형제(sibling) 클래스의 타입으로 변환해준다.
- 상속 계층 구조를 오갈데만 사용
- 가상항수가 없는 타입에는 적용할 수 없다.
ㅇ reinterpret_cast
- 이 연산자 적용 후에 변환 결과는 거의 항상 컴파일러에 따라 다른게 정의.
- 이 연산자가 쓰인 소스는 직업 이식이 불가능.
- 가장 흔한 용도는 함수 포인터 타입을 서로 바꾸는 것
< P.s 내용에 대해 잘 모르시는 분들을 위해 링크를 통해 습득하시기 바랍니다.
goto, cast<형변환>에 의한 사태 악화을 개선하기 위한 문제 제기.
착안점 :
ㅇ C 스타일의 캐스트 문제점
1) 어떤 타입을 다른 타입으로 아무 생각없이 바꾸어주는 괴물적 존재
2) 눈으로 찾아내기 힘들다. grep과 같은 도구를 쓰더라도 구분하기 힘들다.
ㅇ C++ 의 네 가지 연산자
1) static_cast / const_cast / dynamic_cast / reinterpret_cast
해결점 :
C++에 정의된 cast 타입을 사용하자.
ㅇ static_cast
ㅇ const_cast
ㅇ dynamic_cast
ㅇ reinterpret_cast
자세한 내용
ㅇ http://tingcobell.tistory.com/19
ㅇ C++ Language Tutorial : Type Casting http://www.cplusplus.com/doc/tutorial/typecasting.html
요약 :
ㅇ static_cast < 타입 >(표현식)
- C 스타일의 캐스트와 똑같은 의미와 형변환 능력을 가지고 있고, 기본적인 캐스트 연산자
- 제약도 그래로
1) static_cast는 원래 가지고 있는 상수형(constness)을 떼어버리지 못한다.( C 스타일은 가능 )
ㅇ const_cast
- 표현식의 상수성이나 휘발성( volatileness)을 없애는데 사용
ㅇ dynamic_cast
- 상속 계층 관계를 가로 지르거나 하향시킨 클래스 타입으로 안전하게 캐스팅 할때 사용
- 기본 클래스의 객체에 대한 포인터나 참조자의 타입을 파생(derived) 클래스 혹은 형제(sibling) 클래스의 타입으로 변환해준다.
- 상속 계층 구조를 오갈데만 사용
- 가상항수가 없는 타입에는 적용할 수 없다.
ㅇ reinterpret_cast
- 이 연산자 적용 후에 변환 결과는 거의 항상 컴파일러에 따라 다른게 정의.
- 이 연산자가 쓰인 소스는 직업 이식이 불가능.
- 가장 흔한 용도는 함수 포인터 타입을 서로 바꾸는 것
< P.s 내용에 대해 잘 모르시는 분들을 위해 링크를 통해 습득하시기 바랍니다.
'프로그램언어 > More Effective C++' 카테고리의 다른 글
항목 4 : 쓸데 없는 기본 생성자는 그냥 두지 말자 (0) | 2008.08.19 |
---|---|
항목 3 : 배열과 다형성은 같은 수준으로 놓고 볼 것이 아니다. (0) | 2008.08.19 |