0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Constexprとは何か

0
Last updated at Posted at 2026-07-02

こんにちはアサノです。

本日は入社してから知ったconstとconstexprについて、改めて詳しく調べてみようと思い立ったので記載してみました。

constexprとは

constexprとは定数を宣言し、その定数をコンパイル時に確定させるものです。

定数を宣言する方法の一つとしてよくconstが挙げられますが、明確な違いとして、値が確定するタイミングが違うという点があります。

constとconstexprの違い

前述の通り、Constとconstexprはどちらも定数宣言でありながら、値が確定するタイミングが違います。

これにはどういう利点があるかと言うと、

const側は、コンパイル時や実行時でも値を保持できる。
constexpr側は、コンパイル時にはすでに値が確定しており、実行時にその値の計算が必要ない。

ということです。

constとconstexprの使い分け

さて、上記の記述を見て、私は「constexprに全て置き換えればよいのではないか。」と考えました。

しかし、現実はそう上手く行かないようです。

constexprには条件があり、それは、
**コンパイル時に値が決まっている必要がある。**というものです。

例えを挙げるなら下記のような式になります。

int value = GetPower();

// 値がコンパイル時に決まっていないためエラーになる
constexpr int x = value; 

上記は、値がコンパイル時に決まっていないために、エラーとなります。
自分の会社の開発環境では、下記のように.hに記述されているのをよく見かけます。

constexpr float MaxHp = 100.0f;
constexpr float MaxAtk = 10.0f;
constexpr float MaxDef = 5.0f;

こういった、実行時に値が決定する定数にも使用できるというのがconstの利点であると言えます。


以上。

本記事は、業務や学習を通して理解した内容を、自分自身の整理も兼ねてまとめたものです。内容に改善点や補足などがありましたら、ご指摘いただけますと幸いです。

以下は私がこの件を記載するにあたって学んだ用語です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?