안녕하십니까. 김동우입니다.
이번 글에서는 다양한 상수선언에 대해 말해보고자 합니다.
코드 첨부하겠습니다.
#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;
}
#pragma once
namespace constants
{
constexpr double pi(3.141592);
constexpr double avogadro(6.0221413e23);
constexpr double moon_gravity(9.8 / 6.0);
// ...
//추후 원하는 상수는 이런식으로 입력하면 된다.
}
그럼 이번 글은 이만 마치도록 하겠습니다. 감사합니다.