C++(C) 意外に知らないconst修飾子の使い方
Sponsored Links
皆さんこんにちは
お元気ですか。私は眠いです。
さて、今日はconst修飾子の使い方です。
constとは
基本的に内容を書き換えることができないものにつけくわえる修飾子(Javaでいうfinal)
なぜこんなのが必要なのでしょうか?
変数の値を保証したい時に使います。変えてほしくない値があったときにプログラムを書く時に変更されても困るので、このような形で実装することがあります。
constの使い方ですが、大きく分けてパターンが3つあります。
const 変数
変数の前にconst 修飾子がつくと、その変数の値を変更できない。
int main(int argc, char const *argv[]){ const int a = 0; a = 10; // エラー return 0; }
const ポインタ
ポインタの前と後とで機能が異なります。
ポインタの前だと値変更を阻止する。
ポインタの後ろだと指す位置の変更を阻止する。
int main(int argc, char const *argv[]){ int b = 10; const int* p0 = &b; int* const p1 = &b; const int* const p2 = &b; p0 = &b; p1 = &b; //error p2 = &b; // error *p0 = 10;//error *p1 = 10; *p2 = 10;//error return 0; }
const メンバ関数
メンバ関数の後ろにもconstを付け加えることができます。
その場合、メンバ変数の値を変更することができません。
class Foo{ public: int number = 10; void setNumber(int a) const{ //エラー number = a; } };
まとめ
constを有効に使うと面白いけど、const自体がややこしくないか!?