const_cast 연산자

클래스에서 const, volatile__unaligned 특성을 제거합니다.

구문

const_cast <type-id> (expression)

설명

개체 형식에 대한 포인터 또는 데이터 멤버에 대한 포인터는 , volatile__unaligned 한정자를 제외하고 const동일한 형식으로 명시적으로 변환할 수 있습니다. 포인터 및 참조의 경우 결과는 원래 개체를 참조합니다. 데이터 멤버에 대한 포인터의 경우 결과는 데이터 멤버에 대한 원래(캐스팅 해제) 포인터와 동일한 멤버를 참조합니다. 참조 개체의 형식에 따라 결과 포인터, 참조 또는 데이터 멤버에 대한 포인터를 통한 쓰기 작업으로 인해 정의되지 않은 동작이 발생할 수 있습니다.

연산자를 const_cast 사용하여 상수 변수의 상수 상태 직접 재정의할 수 없습니다.

const_cast 연산자는 null 포인터 값을 대상 형식의 null 포인터 값으로 변환합니다.

예시

// expre_const_cast_Operator.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
class CCTest {
public:
   void setNumber( int );
   void printNumber() const;
private:
   int number;
};

void CCTest::setNumber( int num ) { number = num; }

void CCTest::printNumber() const {
   cout << "\nBefore: " << number;
   const_cast< CCTest * >( this )->number--;
   cout << "\nAfter: " << number;
}

int main() {
   CCTest X;
   X.setNumber( 8 );
   X.printNumber();
}

포인터가 포함된 줄에서 const_cast포인터의 this 데이터 형식은 .입니다 const CCTest *. 연산자는 const_cast 포인터의 데이터 형식을 thisCCTest *변경하여 멤버 number 를 수정할 수 있도록 합니다. 캐스팅은 그것이 표시되는 문의 나머지 부분에서만 지속됩니다.

참고 항목

캐스팅 연산자
키워드