Hamutaro - Hamtaro 4

C++

[C++] ํ•œ์ •์–ด const์™€ constexpr

carsumin 2024. 10. 7. 21:24
const ํ•œ์ •์–ด
  • ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ฒŒ ํ•จ
  • ์ดˆ๊ธฐํ™”๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ฐ’์„ ์ •ํ•  ์ˆ˜ ์žˆ์Œ
const double PI {3.14159};

 

 

constexpr ํ•œ์ •์–ด
  • ๊ทธ ๊ฐ’์„ ์ปดํŒŒ์ผํ•  ๋•Œ ํ‰๊ฐ€
  • ์‹คํ–‰ ์ค‘ ๊ฐ’์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋น„ํ•ด ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
int a;
std::cin >> a;
const int b = 20;
const int C1 = a; //cin์„ ํ†ตํ•ด ์ž…๋ ฅ๋œ a์˜ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
constexpr int C2 = a+10; //์˜ค๋ฅ˜ : ์ปดํŒŒ์ผ ์‹œ a์˜ ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†์Œ
constexpr int C3 = b+100; //b+100์„ ์ปดํŒŒ์ผ ์‹œ์— ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Œ
constexpr int C4 = C1*2; //์˜ค๋ฅ˜ : ์ปดํŒŒ์ผ ์‹œ C1์˜ ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†์Œ

 

 

constexpr ํ•จ์ˆ˜
  • ๋ชจ๋“  ์ธ์ˆ˜๊ฐ€ constexpr์ธ ๊ฒฝ์šฐ ์ปดํŒŒ์ผํ•  ๋•Œ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
constexpr int fac(int n) {
    return n > 1 ? n * fac(n-1) : 1;
}

void f(int x) {
    constexpr int a = fac(4); //์ปดํŒŒ์ผํ•  ๋•Œ ๊ณ„์‚ฐ
    int b = fac(x); //์‹คํ–‰ ์ค‘ ๊ณ„์‚ฐ
    ...
}