C++ const 修飾子

最近、ネットの資料で const を見直し、専門書と照らし合わせてみたところ、インターネット上に誤りが多いことが分かったので、ここに記しておきます。

1. const は定数を定義します。

作成後は値を変更できないため、初期化する必要があります。

式で初期化された場合は実行時に初期化され、値で初期化された場合はコンパイル段階で初期化され、コンパイラは変数が使用されているすべての場所を対応する値に置き換えます。このため、const オブジェクトはデフォルトで only に設定されています。ファイル内では有効ですが、extern キーワードを使用して const を変更して、他のファイルで使用できるようにすることができます。

(例:const int x=5; const int y=init(); int *const z=&Z;)

2.定数参照/ポインタ:

定数/ポインターへの参照/アドレスを使用して、バインド/ポイントされているオブジェクトを変更することはできません。(インターネット上の多くの情報は、ポイントされたオブジェクトを変更できないと言っています。実際、彼を介して変更することはできません。同時に、ポインター自体の値も変更できます。参照(単なるエイリアスは変数ではありません) できません。)

ただし、定数アドレスを格納するために使用できるのは定数ポインターのみであり、これがオンライン資料のエラーの原因になる可能性があります。

(例:const int &x=y; const int *z=&Z;)

3. 関数で使用します。

関数の引数が定数ポインタの場合、関数内で引数ポインタの指す位置の内容が変化することを回避できます。

const を使用して関数本体を変更する場合は、関数本体の行末に置き、関数本体でオブジェクトのデータ メンバーを変更できず、非 const メンバー関数を呼び出すことができないことを示します。

(例:void fun1(const int x){}; void fun2()const;)

おすすめ

転載: blog.csdn.net/WindRushNight/article/details/122986771