定数のconstメンバ関数をクラスに宣言
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
クラスのメンバ関数には、データの読み込み専用など、メンバ変数の値をまったく変更する必要のないメンバ関数が存在する場合があります。
この読み込み専用のメンバ関数の場合、メンバ変数の値をあらかじめ変更できないように、定数のメンバ関数として宣言しておくと安全です。
スポンサーリンク
#include<iostream> class echo { public: int years_old; // コンストラクタ echo(int old) { years_old = old; } // チェック int check() const { //years_old = 10; // メンバ変数を変更。 // constメンバ関数なので、上記文を有効にするとコンパイルエラー if(years_old >= 20) return 1; else return 0; } // 表示 void display() { std::cout << years_old << " : OK\n"; } }; int main() { while (true) { int num; std::cout << "Enter number : \n"; std::cin >> num; echo a_echo(num); if (a_echo.check()) a_echo.display(); else std::cout << "Under 19 : NOT OK" << "\n"; } return 0; }
上記コードでは、メンバ関数check()が、constで定数メンバ関数となっています。
したがって、このcheck()の中では、クラス内のメンバ変数を変更することはできません。
「//years_old = 10; // メンバ変数を変更。」の一文を有効にしますと、コンパイルエラーとなります。
以下、実行結果です。
Enter number : 23 23 : OK Enter number : 45 45 : OK Enter number : 18 Under 19 : NOT OK
スポンサーリンク
>> 次の記事 : static・静的メンバ変数
<< 前の記事 : 定数のconstメンバ変数をクラスに宣言
- - 関連記事 -
- 派生クラスのコンストラクタ・デストラクタ
- 派生クラスによる関数の隠蔽
- 仮想クラス
- 抽象クラス
- 仮想関数・virtualキーワード
- 親クラスの引数ありコンストラクタを子クラスから初期化・動的サイズのスタック
- クラスのアクセス制限キーワード・private, protected, public
- スタックを実装したクラスを拡張する
- クラス継承・親クラスと子クラス
- static・静的メンバ関数
- static・静的メンバ変数
- 定数のconstメンバ変数をクラスに宣言
- フレンドクラス・friend
- フレンド関数・friend
- クラスの中にメンバ関数(メソッド)を実装する
- explicit・コンストラクタを明示する
- クラスで自動的に生成されるメンバ関数
- コピーコンストラクタ
- 引数つきのコンストラクタを持つクラス定義
- コンストラクタで自動的に初期化する
スポンサーリンク