【Cpp】const参照とconstポインタの違い
目次
constを変数につける場合
ローカル変数にconst修飾子をつけると、初期化時以降には値を変更できなくなります。
- constをつける位置は
型の前と後どちらでも効果は同じです。
1 | |
- 変数宣言時に値を設定しないということもできません。
1
2const int a = 10; // OK
const int a; // NG
ポインタにconstをつける場合
ポインタにconst修飾子をつける場合、3通りの書き方があり、書き方によって定数にすることができるものが変わる
パターン1: const 型 * 変数名 = ポインタ
この場合、値は変更できないが、参照先は変更することができる
1 | |
パターン2: 型 * const 変数名 = ポインタ
この場合、値の変更はできるが、参照先は変更することができない
1 | |
パターン3: const 型 * const 変数名 = ポインタ
この場合、何も変更できないことになる。
パターン1で変更できなかった値とパターン2で変更できなかった参照先どちらも変更できなくなる
1 | |
constを参照につける場合
まず前提として、参照の場合はconstを&の後につけることはできない
- 通常の変数のときと同じで、型の前後どちらにconstがあっても効果は同じ
1
2
3
4
5
6
7int a = 10;
const int &value = &a; // OK
int const &value = &a; // OK
// これだと、参照の参照を変更できない効果とかぶるので意味がない
int& const value = &a; // NG
参照にconstをつけた場合、値の変更も参照の付け替え(これはデフォルト)もできなくなります。
1 | |
【Cpp】const参照とconstポインタの違い
https://daiki-iijima.github.io/2021/10/02/【Cpp】const参照とconstポインタの違い/




