본문 바로가기
프로그래밍 언어/C++

[C++] const_cast 필요성 및 활용

by 까망 하르방 2025. 1. 22.
반응형

const_cast 필요성

C언어 캐스팅으로 const 주소를 받아서

값을 다르게 해볼 수 있다.

#include <iostream>

int main()
{
	const int c = 100;

	int* p = (int*)&c;

	*p = 5;

	std::cout << *p << std::endl; // 5
}

 

 

엄격한 제한을 두지 않는 C Style Casting 이기 때문에

개발자가 의도한 것인지 분명하지 않다.


const_cast 활용

C++에서는 const_cast 활용하여

상수성을 제거할 수 있다.

(static_cast와  reinterpret_cast 에서는 error 발생)

int main()
{
    const int c = 100;

    int* p = const_cast<int*>(&c);
}

 

 

C++에서는 casting 마다 역할이 있기 때문에

필요하다면 각 역할에 맞게 중첩 캐스팅 해볼 수 있다.

* const_cast는 같은 타입으로 상수성 제거 가능

int main()
{
    const int c = 100;

    // C Style (const 변수를 다른 타입으로 캐스팅)
    char* p1 = (char*)&c;

    // 상수성을 먼저 제거하고 다른 타입으로 캐스팅
    char* p2 = reinterpret_cast<char*>( const_cast<int*> (&c) );

    // 다른 타입으로 먼저 캐스팅 후 상수성 제거
    char* p2 = const_cast<char*> ( reinterpret_cast<const char*> (&c) );
}

 

 

📌 [C++] reinterpret_cast 필요성 및 사용 방법

 

[C++] reinterpret_cast 필요성 및 사용 방법

reinterpret_castreinterpret_casttype_id>(expression);→ reinterpret_cast바꿀 타입>(대상); • 메모리 재해석 • 서로 다른 타입 주소 캐스팅 • 정수 ↔ 주소 사이 캐스팅 C++에서는 주로 static_cast 활용

zoosso.tistory.com

반응형

댓글