【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://blog.djima.net/2021/10/02/【Cpp】const参照とconstポインタの違い/