변환의 C ++ 유형

첫째, 암시 적 형식 변환

INT는의 m = 3 + 45.6; //48.6000000000 48 소수 부분이 절단 된 절단

두, C 스타일의 명시 적 타입 변환 (캐스트)

// INT K = 5 % 3.2; 컴파일러 에러 

INT의 K = 5 % (INT) 3.2] // C의 언어 스타일 캐스트하지만 정확하게 전달 될 수 있도록 데이터를 프로그래머 필요
INT의 K = 5 % INT (3.2) (하나 개는 C 언어 스타일 캐스트) // 함수 스타일 캐스트
INT의 K = 5 % (INT) "DDDD는"; // C 언어 스타일 캐스트,하지만 결과는 확실히 잘못
// 그래서 C 스타일은 안전하지 않은 유형 주조 캐스트

세, C ++ 형식 변환

// C는 ++은 C 스타일 캐스트를 지원하지만 4 C ++ 캐스트는 서로 다른 목적으로 사용되었다 제공 

, 코드 작성을 용이하게하기 위해 더 나은 유형 검사 메커니즘을 // 목적은 의미와 기능의 풍부한을 제공하는 것입니다 및 유지 보수
1.static_cast 
2.dynamic_cast
3.const_cast
4.reinterpret_cast

라고 "라는 캐스트"네 개의 캐스트
1.static_cast 정적 변환기 (C 스타일 캐스트하는 것으로 이해 될 수 있지만, 컴파일러의 적법성을 확인한다)
// 일반적인 형태 

// 캐스트 이름 <유형> (표현) 1.static_cast : 정적 컨버터 (필수 C 스타일의 혁명으로 이해 될 수있다
변경할 수 있지만, 컴파일러는 그 적법성을 확인합니다)
  그것은 사용할 수 있습니다
    . (예컨대 부동 소수점 형 스위치 정수) 변환의 관련 종류 
    , I는 = static_cast <INT> 100.0 값 int
. B는 서브 클래스 전환 상위 클래스 (상속)
포인터 및 다른 포인터 * 사이 c.void 변환 (것으로 ) * 포인터 형 무효 캐스팅
  가능 
   가. 일반적으로 포인터의 다른 유형 사이의 변환에 사용하지
2.dynamic_cast : 런타임 유형을 식별 주로 사용 검사. 
그것은 주로 (상위 서브 타입 오브젝트 유형에 대한 포인터)를 부모 종류와 하위 간의 변환에 사용

3.const_cast는 : 제거 포인터 또는 참조 CONST (컴파일 시간 형식 변환) 속성의 다른 유형간에 변환 할 수없는
 
 
4. reinterpret_cast (관계없이 변환 처리의 종류)을 재 해석 밀링있다 열악한 보안 
  통상적으로 두 종류의 변환에 사용되는
정수 변환에 대한 포인터.
다른으로 포인터 타입 B. 포인터의 유형입니다.
다. 정수에 대한 포인터

IV 요약

캐스트는 권장되지 않습니다 1. 그것은 컴파일러 오류를 억제한다

2. 매우 위험 reinterpret_cast,에 const_cast 사용은 설계 결함을 의미

당신이 정말로 캐스팅 할 필요가있는 경우 3. C ++ 스타일의 캐스트를 사용해야합니다

4. 잘으로, 규칙만큼 사용하는 것이 바람직 reinterpret_cast

추천

출처www.cnblogs.com/sxgloverr1314/p/11517500.html