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

[C++] 파생 클래스에서 상속받은 멤버의 접근성 제어하기

클래스 멤버의 접근성 제어C++에서는 클래스의 접근 지정자( access specifier )를 통해서, 외부나 상속받은 클래스에서 대상 클래스의 멤버에 접근할 수 있는지 여부를 제어할 수 있습니다.class CBase{private: int m_private;protected: int m_protected;public: int m_public;};int main(){ CBase base; base.m_private = 1; // error ! base.m_protected = 2; // error ! base.m_public = 3; // ok}클래스 외부에서 base의 멤버에 접근하려면, 그 멤버는 public 접근 권한을 가져야 합니다.그러므..

2025. 1. 20.
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
  • ···
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • »

전체 카테고리

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

블로그 인기글

태그

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

티스토리툴바