ホームに戻る
const変数とconstクラスとconst関数
#include <iostream>
/*
*
* const変数とconstクラスとconst関数
*
* const変数は初期化時に値を設定し、
* 変更しようとするとコンパイルエラーになります。
* const の位置で意味が変わる場合があります。
*
* const char *buffer; データが const
* char* const buffer; ポインタが const
*
* constをつけることで新しい型の定義となります。
* つまり int と const int は違う型です。
* int 型が引数の関数に const int 型でオーバーライドするので注意。
*
* constクラスはconst変数のクラス版です。
*
* ただconstクラスはどのメンバ関数が、
* メンバ変数に変更を加えているか判断できません。
* よってconst関数が呼んでも安全なメンバ関数には、
* constをつけたconst関数として明示します。
*
*/
class A{
enum{num1 = 3};
int num;
public:
A() : num(num1){};
void setNum(const int n){this->num = n;} // n は変更不可
const int getNum() const {return this->num;} // const関数
};
using namespace std;
int main(){
A a;
const A ca;
const int n = 2;
//n = 4; これはエラー
a.setNum(n);
//ca.setNum(n); これはエラー
cout << a.getNum() << endl;
cout << ca.getNum() << endl; // エラーにならない
return 0;
}
結果
2
3