코딩 모닥불
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기
      • C++
      • 표준 라이브러리
      • 백준(BOJ)
  • 홈
  • 태그
  • 방명록
C++

[C++] C-style 타입 변환과 C++의 static_cast

암시적인 타입 변환과 명시적인 타입 변환암시적인 타입 변환( implicit type conversion )은 변수나 표현식의 타입이 일치하지 않는 경우, 컴파일러가 자동으로 필요한 타입으로 변경하는 것을 말합니다. 아래의 예문에서 암시적인 형 변환을 보여줍니다.int main(){ double val = 10 / 4; // 암시적인 형 변환 cout ▼출력double type value: 2위에서, 컴파일러는 10/4의 int 값을, double 타입의 변수에 대입하기 위해서, 자동으로 double 타입의 값으로 변경합니다. 그런데, 위의 결과는 문제가 좀 있네요. val의 값이 2.5가 되기를 기대했지만, 실제는 2가 되었습니다. 이렇게 된 이유는 10/4의 int 연산 수행을 먼저 하고,..

2025. 3. 21.
표준 라이브러리

[C++] 문자열을 읽기 전용으로 참조하는 std::string_view

std::string_viewstd::string_view는 문자열을 사용하면서 발생하는, 무거운 복사 과정을 줄이고자 만든 클래스입니다. C++ 17 이상의 버전에서 사용할 수 있는, 이 클래스는 실제 원본 문자열을 읽기 전용 방식으로 참조하는 기능을 합니다. string_view가 동작하는 방법은 다음의 비유를 통해 이해할 수 있을 것입니다. 자동차를 그리는 데는 두 가지 방법이 있습니다. 하나는 자동차를 사서 세워두고 그리는 방법입니다.하지만, 이 경우는 값 비싼 비용을 감당해야 합니다. 다른 하나는 남이 세워둔 자동차를 창 너머에서 보며, 그리는 방법입니다. 남의 차니까 그 차의 외형을 변경하거나 위치를 옮길 수는 없지만, 이 방법은 많은 비용이 들지 않습니다. 위의 두 번째 방법이 string_..

2025. 3. 19.
C++

[C++] 단점을 보완한 범위 있는( scoped ) enum

범위 없는( unscoped ) enumC++에서 보통의 식별자들의 경우, 중괄호 블록을 벗어나게 되면, 효력을 잃게 마련입니다.int main(){ { int val = 0; } val += 10; // error ! 변수의 범위를 벗어났음} 그렇지만, 아래의 enum 타입의 식별자 같은 경우, 이러한 제약에 영향을 받지 않습니다.int main(){ enum Color{ white, black, red }; auto white = false; // error ! enum Color2{ black, yellow, blue }; // error !! black 식별자 중복}▼출력error: 'auto white' redeclared as differen..

2025. 3. 9.
C++

[C++] 파생 클래스 객체에 발생하는 객체 잘림( object slicing )

객체 잘림( object slicing )클래스의 상속 관계를 이용할 때는, 기본 클래스의 포인터 타입( pointer )이나 참조 타입( reference )을 사용하여 접근해야 한다는 것을 알고 있을 것입니다. 다음은 기본 클래스 CBase에서 상속받은 클래스 CDerived의 객체에 접근하기 위해서, 기본 클래스의 참조 타입을 이용하는 것을 보여줍니다.#include #include using std::string_view;class CBase{ // 기본 클래스 int m_id;public: CBase( int id) : m_id( id){} virtual string_view getName(){ return "Base"; } // 가상 함수 int getID() const ..

2025. 1. 19.
  • «
  • 1
  • »

전체 카테고리

  • 분류 전체보기
    • C++
    • 표준 라이브러리
    • 백준(BOJ)

블로그 인기글

태그

  • #전처리기
  • #decltype
  • #using
  • #헤더 가드
  • #constexpr
  • #함수 객체
  • #동적 계획법
  • #전방 선언
  • #inline
  • #Lamda
  • #static_cast
  • #복사 생성자
  • #std::sort
  • #namespace
  • #std::unique_ptr
  • #std::stack
  • #auto
  • #초기화
  • #상수 표현식
  • #예외 처리
  • #깊이 우선 탐색
  • #Enum
  • #std::string_view
  • #std::queue
  • #std::vector
  • #const
  • #범위 기반 for
  • #이진 탐색
  • #포인터
  • #소멸자
MORE
애드센스 광고 영역
Powered by Privatenote Copyright © 코딩 모닥불 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바