따배씨++ (2.7 Symbolic constants)

김동우·2021년 4월 9일
0

안녕하십니까. 김동우입니다.

이번 글에서는 다양한 상수선언에 대해 말해보고자 합니다.

코드 첨부하겠습니다.

  1. main.cpp
#include <iostream>
#include "CONSTANTS.h"
using namespace std;// global
// #define PRICE_PER_ITEM 30 
// c++에서는 상수대체 매크로를 사용하지는 않는다.
// 1. 디버깅에서 불리하다.
// 2. define은 전체에 영향을 끼치는 전처리기, 다른 cpp file에도 영향을 끼칠 수 있다.

void printNumber(const int my_number) // 파라미터 변조 방지
{   
    int n = my_number; // 값을 복사
    cout << n << '\n' << endl;
}

int main() 
{

    const double gravity{ 9.8 }; // 고정 선언
    // 어떠한 방식을 사용하더라도 const 값을 변경하는 것은 추천하지 않는다.
    // compiletime const
    double const pi{ 3.14 }; // const 선언의 위치는 상관이 없다.
    // 포인터 레퍼런스에서는 선언의 차이가 존재하게 된다.
    // const의 경우 init값이 있어야 한다.
    printNumber(123); // output : 123

    int number;
    cin >> number;

    const int special_number(number); // number값을 복사, 변조 방지
    // runtime const - 실행환경에서 상수를 결정

    constexpr int my_const(112233);
    // compiletime const = constexpr 같은 개념이라고 볼 수 있다.

    cout << '\n' << special_number << " " << my_const << '\n' << endl;
    // output : number 112233

    const int price_per_item = 30;
    int num_item = 123;
    int price = num_item * price_per_item;
    // 복습내용

    double radius;
    cin >> radius;
    double circumference = 2.0 * radius * constants::pi;
    cout << '\n' << circumference << endl;
    // 헤더를 통한 상수 불러오기는 코딩의 전체적인 질을 향상시킬 수 있다.

    return 0;
}
  1. CONSTANTS.h
#pragma once

namespace constants
{
    constexpr double pi(3.141592);
    constexpr double avogadro(6.0221413e23);
    constexpr double moon_gravity(9.8 / 6.0);
    // ...
    //추후 원하는 상수는 이런식으로 입력하면 된다.
}

그럼 이번 글은 이만 마치도록 하겠습니다. 감사합니다.

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN