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

[C++] 객체를 변경할 수 없는 const 멤버 함수

const 멤버 함수C++에서는 기본 타입에 const 키워드를 붙여 값을 변경할 수 없는 변수를 정의할 수 있습니다.그리고, 이러한 변수는 값을 변경할 수 없으므로, 정의할 때 반드시 초기화 과정을 거쳐야 합니다.int variable; // okconst int const_variable; // error ! 초기화 필요const double PI{ 3.1415 }; // okstatic_assert( std::is_same_v == false ); // ok참고로, std::is_same_v의 값은 두 개의 템플릿 매개변수의 타입이 같으면 true입니다.그리고, 위에서 볼 수 있듯이, const int와 int는 다른 타입입니다. 이와 마찬가지로, 클래스 타입( struct, class, union..

2025. 2. 17.
C++

[C++] 항상 컴파일 시에 평가되어야 하는 consteval 함수

std::is_constant_evaluated와 if constevalC++ 에는 constexpr 변수를 초기화할 때 같이 상수 표현식이 필요한 상황이 있습니다.이러한 상황을 constant evaluated context ( 혹은 constant context )라고 합니다.constexpr int size{ 3 + 5 }; // constant context constexpr 함수는 이러한 상수 문맥( constant evaluated context ) 뿐 아니라, 그렇지 않은 상황에도 모두 사용할 수 있는 함수입니다. [C++] 상수 표현식에 사용될 수 있는 constexpr 함수constexpr 함수다음은 특별한 사용자 공식에 의하여 원소 개수를 구하고, 이를 사용하여 배열을 정의하는 예문입니..

2025. 2. 15.
C++

[C++] 상수 표현식에 사용될 수 있는 constexpr 함수

constexpr 함수다음은 특별한 사용자 공식에 의하여 원소 개수를 구하고, 이를 사용하여 배열을 정의하는 예문입니다.#include int main(){ constexpr int row{ 3 }; constexpr int col{ 4 }; constexpr int size{ ( row + 3 ) * ( col + 2 ) }; // 상수 표현식 std::array two_dim_arr{};}그런데, 이 배열을 정의하기 위해선, 원소의 개수를 나타내는 size가 상수 표현식( const expression ) 즉, 컴파일 시에 값을 평가할 수 있는 표현식이어야 합니다. 그래서, 예문에서는 이 size를 constexpr 변수로 정의하였습니다. [C++] 컴파일 시에 값..

2025. 2. 13.
C++

[C++] 컴파일 시에 값을 알 수 있는 constexpr 변수

constexpr 변수이전 글에서, 상수 표현식( const expression )은 컴파일 시에 평가할 수 있는 표현식을 말한다고 얘기했었습니다. [C++] 컴파일 시 값을 알 수 있는 상수 표현식( const expression )컴파일 시, 값을 알 수 있는 표현식( expression )표현식이란 리터럴( literal ), 변수( variable ), 연산자( operator ) 그리고 함수 호출( function call )의 연속된 식이라고 할 수 있습니다.#include int func( int a, incodingbonfire.tistory.com그리고, 이 상수 표현식을 사용할수록, 컴파일러는 프로그래머가 작성한 코드를 최적화 확률이 높아집니다.그렇기 때문에, 가능하다면 일반 표현식보다..

2025. 2. 11.
C++

[C++] 컴파일 시 평가할 수 있는 constexpr 클래스 객체와 멤버 함수

constexpr 집합체( aggregate )집합체( aggregate )란 여러 개의 데이터 멤버를 가질 수 있는 타입( type )을 말합니다. [C++] 구조체( struct )와 같은 집합체( aggregate )의 초기화집합체( aggregate )의 초기화집합체( aggregate )란 여러 개의 데이터 멤버를 갖고 있는 타입( type )을 말합니다. 다음은 이러한 집합체 해당하는 struct 타입의 예입니다.struct Date{ // 집합체 int year; int mcodingbonfire.tistory.com그리고, 이전 글에선 집합체로서의 struct 타입에 관해 얘기했었습니다.struct Point{ int m_x; int m_y; constexpr int add..

2025. 2. 8.
C++

[C++] 사용자 정의 타입 enum을 입/출력 하기

enum 타입의 값을 문자열로 출력하기enum 타입의 열거자( enumerator )들은 사실 이름을 가진 정수형( integral ) 상수입니다. [C++] 몇 가지 값만 가질 수 있는 타입: unscoped enum두 가지 값만 가질 수 있는 타입 boolbool 타입은 C++의 기본적인 타입( fundamental type )의 하나입니다.이 타입은 키워드로 정해진 두 값 true와 false만을 가질 수 있는데, 이 상징적인 상수 true는 사실codingbonfire.tistory.comenum Stoplight { red, // 0 yellow, // 1 green, // 2 };그래서, std::cout를 통해 이 열거자를 출력해 보면..

2025. 2. 4.
C++

[C++] 몇 가지 값만 가질 수 있는 타입: unscoped enum

두 가지 값만 가질 수 있는 타입 boolbool 타입은 C++의 기본적인 타입( fundamental type )의 하나입니다.이 타입은 키워드로 정해진 두 값 true와 false만을 가질 수 있는데, 이 상징적인 상수 true는 사실 정수 1을 가리키고, false는 정수 0을 의미합니다.#include int main(){ std::cout ▼출력1 0그렇기 때문에, '그냥 int나 short 타입을 사용해도 되는 것 아닌가'라고 생각할 수 있고, 실제로 그렇게들 많이 사용합니다.하지만, 프로그램 코드의 입장에서 보면, bool 타입의 사용은 크게 두 가지 장점을 갖고 있습니다. 첫 번째, bool 타입을 사용함으로써, 코드를 읽고 이해하기 쉽게 만들 수 있습니다.if ( Calculatio..

2025. 2. 2.
C++

[C++] 컴파일 시 가정의 진위를 검사하는 static_assert

실행 시 가정의 참/거짓을 검사하는 assert다음은 두 실수를 전달받아서 나눈 결과를 반환하는 함수입니다.double divide( double numerator, double denominator){ if ( denominator != 0){ return numerator / denominator; } else{ return 0; // denominator가 0이 될 때 }}우선, 이 함수는 의도한 대로 제대로 동작합니다.하지만, 이것을 작성한 프로그래머는 ( 그전에 조치를 취해두었기 때문에 ) 나눗셈의 분모인 denominator는 절대 0이 될 수 없다고 생각할 수도 있습니다.그래서, 만일 denominator가 0이 된다면, 어떤 경우에 이런 상황이..

2025. 1. 28.
C++

[C++] 컴파일 시 조건을 평가할 수 있는 constexpr-if 문

constexpr-if 구문if 구문은 프로그램 실행 시, 표현식( expression )의 참 / 거짓을 평가하여, 실행하고자 하는 문장으로 분기하도록 해주는 구문입니다.#include int main(){ constexpr double PI{ 3.1415 }; double radius{ 5 }; double circumference; if ( PI == 3.1415){ // 상수 표현식 circumference = PI * 2 * radius; }else{ circumference = 3.1415 * 2 * radius; } std::cout 그런데, 이전 글에서 말했듯이, 위의 PI는 상수 표현식( const expres..

2025. 1. 26.
C++

[C++] 컴파일 시 값을 알 수 있는 상수 표현식( const expression )

컴파일 시, 값을 알 수 있는 표현식( expression )표현식이란 리터럴( literal ), 변수( variable ), 연산자( operator ) 그리고 함수 호출( function call )의 연속된 식이라고 할 수 있습니다.#include int func( int a, int b){ return a + b; // a + b는 표현식}int main(){ int a{ 5 }; // 리터럴 int b{ a }; // 변수 int c{ a + 3 }; // 연산자와 변수, 리터럴의 조합 int d{ func( b, 5) }; // 함수 int e{ }; // 표현식이 없음 std::cout 그리고, 일반적으로 컴파일러는 컴파일 시, 이러한..

2025. 1. 24.
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »

전체 카테고리

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

블로그 인기글

태그

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

티스토리툴바