はじめに

Read accessorを定義/実装する際に、意図的にconst宣言をすることにより、誤ってメンバー変数の内容を書き換える記述をしてしまうことを未然に防ぐことができます。

constの効能と宣言方法

C++では、メンバ関数の宣言の後に「const」を付与することにより、そのメンバ関数がクラスのインスタンス内メンバ変数を書き換えないことを宣言することができます。

const宣言の方法は以下の通りです。

サンプルコード
#include <stdio.h>

class Number
{
    private: int iNumber;

    public: int getNumber() const
    {
        this->iNumber=8;  //  ← 誤ってメンバ変数を書き換えると…
        return(this->iNumber);
    }

    public: void setNumber(int aNumber)
    {
        this->iNumber=aNumber;
    }
};

void main()
{
    Number *tNumber=new Number();
    tNumber->setNumber(5);
    printf("tNumber->getNumber() : %d\n",tNumber->getNumber());
    delete tNumber;
}

上記のように、メンバ関数にconst宣言を行った状態で、そのメンバ関数内でメンバ変数の値を変更しようとすると、コンパイラレベルでエラーが発生します。

上記のコードでは、逆にconst宣言をはずすと、コンパイルは問題なく通ってしまいます。

このため、プログラムの設計上、Read accessorとしてメンバ関数を実装する際には、const宣言をしておくと、意図しない間違いをコンパイラレベルで検出することができます。

是非ともお試しください。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。