728x90

static_cast

  • static_cast는 C++에서 타입 변환을 수행할 때 사용하는 캐스트 연산자이다.
  • static_cast는 컴파일 시간에 타입 변환을 검사하며, 안전한 변환만을 허용한다.

 

기본 문법

static_cast<new_type>(expression)
// new_type : 변환하고자 하는 타입
// expression : 변환 대상이 되는 표현식

 

사용예제

// 기본 타입 변환
int a = 10;
double b = static_cast<double>(a) // int를 double로 변환

// 포인터 타입 변환
class Base {};
class Derived : public Base {};

Base* base new Derived();
Derived* derived = static_cast<Derived*>(base); // 안전한 다운캐스팅

// 열거형 타입 변환
eunm class Colors { Red, Green, Blue };
int colorValue = static_cast<int>(Colors::Red); // 열거형을 정수형으로 변환

 

주의사항

  • static_cast는 컴파일 시간에 타입 검사만 하므로, 런타임에 안전성을 보장하지는 않음.
    예를 들어, 상속 관계에서 기본 클래스 포인터를 유도 클래스 포인터로 변환할 때, 실제로 유도 클래스 객체를 가리키고 있지 않으면 잘못된 결과를 초래할 수 있음.
  • 잘못된 타입 변환을 시도할 경우, 컴파일 오류가 발생할 수 있음.

 

728x90

'전산 > C++' 카테고리의 다른 글

c++ - std::endl 과 "\n"의 차이  (0) 2024.06.29
728x90

백준 하노이 탑 이동 순서 문제

endl를 "\n"로 바꿨을 뿐인데 맞았다.

eldl를 썼을 때
\n를 썼을 때



endl과 "\n" 은 C++에서 개행을 나타내는 방법이다.

 

 

endl은 C++ 표준 라이브러리 에 정의된 출력 스트림 조직자 이다.

  • 출력 스트림에 개행 문자("\n")을 출력한다.
  • 버퍼를 비워서 (파일 출력의 경우 파일에 쓰기를 강제로 실행함으로써) 출력이 즉시 화면에 나타난다.
  • 일반적으로 버퍼링을 사용하는 출력에서는 endl을 사용하여 출력을 하면 비효율적이 될 수 있다.

버퍼 : 일시적으로 데이터를 저장하는 메모리 공간

버퍼링 : 데이터를 일시적으로 버퍼에 저장하여 입출력 성능을 향상시키는 기술

 

"\n"은 개행 문자로 문자 리터럴로 사용된다.

  • 단순히 문자열에 개행 문자를 추가한다.
  • 이는 버퍼를 비우지 않고, 다음 출력이 이어서 나타낼 수 있다.

 

 

 

결론 : 일반적으로 개행만 필요하다면 "\n"을 사용하는 것이 효율적이다.

endl은 특정 상황에서 버퍼를 비우는 것이 필요할 때 사용하자.

728x90

'전산 > C++' 카테고리의 다른 글

C++ - static_cast  (0) 2024.07.01

+ Recent posts