문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
Visual Studio 2017을 사용하는 것이 좋습니다.

포인터 형식 변환

한 개체 형식에 대한 포인터는 다른 개체 형식의 포인터로 명시적으로 변환될 수 있습니다. void *로 선언된 포인터는 임의의 개체 형식에 대한 포인터로 간주됩니다.

기본 클래스에 대한 포인터는 다음 조건이 충족되는 한 파생 클래스에 대한 포인터로 명시적으로 변환될 수 있습니다.

  • 명확한 변환이 있습니다.

  • 기본 클래스가 어떤 지점에서도 가상으로 선언되지 않습니다.

void * 형식으로 변환하면 개체의 표현이 변경될 수 있기 때문에 type1* void * type2* 변환이 type1* type2* 변환(값만 변경)과 동일하다고 보장할 수 없습니다.

이러한 변환을 수행할 때 결과는 기본 클래스를 나타내는 원래 개체의 하위 개체에 대한 포인터입니다.

모호성 및 가상 기본 클래스에 대한 자세한 내용은 파생 클래스를 참조하십시오.

C++에서는 개체 또는 함수에 대한 포인터를 void * 형식으로 명시적으로 변환할 수 있습니다.

함수 포인터 형식에 개체 형식에 대한 포인터를 수용할 비트가 충분히 있는 경우 개체 형식에 대한 포인터를 함수에 대한 포인터로 명시적으로 변환할 수 있습니다.

const 개체에 대한 포인터는 const 형식이 아닌 포인터로 명시적으로 변환될 수 있습니다. 이 변환의 결과는 원래 개체를 가리킵니다. const 형식의 개체 또는 const 형식의 개체에 대한 참조는 const가 아닌 형식에 대한 참조로 캐스팅할 수 있습니다. 결과는 원래 개체에 대한 참조입니다. 프로그램 기간 동안 일정하게 유지되도록 원래 개체가 const로 선언되었을 것입니다. 따라서 명시적 변환은 이 안전 메커니즘을 무효로 만들어 이러한 개체를 수정할 수 있도록 합니다. 이 경우의 동작은 정의되지 않았습니다.

volatile 형식의 개체에 대한 포인터는 volatile이 아닌 형식에 대한 포인터로 캐스팅할 수 있습니다. 이 변환의 결과는 원래 개체를 참조합니다. 마찬가지로, volatile 형식의 개체를 volatile이 아닌 형식에 대한 참조로 캐스팅할 수 있습니다.

표시: