Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 const 캐스트

<시간/>

주어진 작업은 C++에서 const_cast의 작동을 보여주는 것입니다.

const_cast는 유형 캐스팅 연산자 중 하나입니다. 어떤 개체의 상수 값을 변경하는 데 사용되거나 개체의 상수 특성을 제거하는 데 사용된다고 말할 수 있습니다.

const_cast는 특정 시점에서 가끔 변경해야 하는 일정한 값을 가진 개체가 있는 프로그램에서 사용할 수 있습니다.

구문

구문은 다음과 같습니다 -

const_cast<유형 이름>(표현식)

예시

입력:x =50const int* y =&xcout<<"이전 값은"<<*y<<"\n";int* z=const_cast(y);*z=100;cout <<"새 값은"<<*y;출력:이전 값은 50새 값은 100입니다.

다음 예제는 const_cast의 기본 사용법을 보여줍니다. 여기서 우리는 값 50이 할당된 int 유형의 상수 변수 "x"와 변수 "x"를 가리키는 int 유형의 또 다른 상수 포인터 "y"를 선언했습니다.

const_cast를 사용하려면 세 번째 포인터를 만들어야 하며 여기에서 동일한 데이터 유형, 즉 int의 "z" 포인터를 만들었습니다.

따라서 상수 변수 "x"를 가리키는 상수 포인터 "y"를 const_cast에 전달하고 포인터 z에 값을 할당하면 상수 포인터 "y"의 값을 변경할 수 있습니다.

이런 식으로 const_cast를 사용하여 상수 값을 50에서 100으로 변경할 수 있었습니다.

const_cast를 사용하지 않고 포인터 "y"가 가리키는 "x" 값을 변경하려고 하면 "읽기 전용 할당" 오류가 표시됩니다. 위치”

아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다. -

  • 먼저 int 유형의 상수 변수를 만들고 적절한 크기를 지정합니다. 예를 들어 "a"이고 값이 20이라고 가정하겠습니다.
  • 그런 다음 상수 포인터를 만들고 동일한 데이터 유형의 "b"를 말하고 상수 변수 "a"의 주소를 할당합니다.
  • 그런 다음 세 번째 포인터를 만들고 const_cast에 사용할 데이터 유형 int의 "c"라고 합시다.
  • 이제 상수 포인터 "b"를 const_cast에 전달하고 포인터 "c"와 동일하게 유지합니다.
  • 마지막으로 포인터 "c"의 값을 변경합니다. 그러면 상수 포인터 "b"가 가리키는 값이 자동으로 변경됩니다.

알고리즘

StartStep 1 -> 함수에서 main() 상수 선언 int a=20 상수 포인터 선언 int* b=&a 포인터 선언 int*c =const_cast(b) *c=40Stop 할당 사전> 

예시

#include 네임스페이스 std;int main() { const int a =20; 상수 정수* b =&a; cout<<"이전 값은"<<*b<<"\n"; int* c=const_cast(b); *c=40; cout<<"새 값은"<<*b; 반환 0;}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

이전 값은 20새 값은 40입니다.

여기서 상수 포인터 "b"는 변경할 수 없는 값=20인 상수 변수 "a"를 가리킵니다. 그러나 동일한 데이터 유형의 세 번째 비상수 포인터 "c"를 만들고 const_cast를 사용하여 해당 상수 값을 변경할 수 있습니다.

포인터 "c"의 값이 변경되면 상수 포인터 "b"가 가리키는 상수 값 20이 변경됩니다. 따라서 const_cast를 사용하기 전의 출력값은 20, 사용 후의 출력값은 40이었습니다.

const_cast의 다른 용도

모든 프로그램에서 const_cast는 상수 데이터를 허용하지 않는 다른 함수에 상수 데이터를 전달하는 데 사용할 수 있습니다.

예시

#include 네임스페이스 사용 std;int change(int* p2) { return (*p2 * 10);}int main() { const int num =100; const int *p =# int *p1 =const_cast (p); cout <<변경(p1); 반환 0;}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

1000

다음 프로그램은 상수 데이터를 수신하지 않는 함수 change()에 const_cast를 사용하여 상수 값 100을 전달하는 방법을 보여줍니다.

change() 함수는 값을 받아 10을 곱한 다음 최종 출력, 즉 1000을 생성하는 main() 함수로 다시 반환합니다.

const_cast 없이 동일한 프로그램을 실행하고 상수 값을 change() 함수에 직접 전달하려고 하면 오류가 표시됩니다.