C++関数の後にconst修飾を加える

978 ワード

隠したthisポインタにconstを付けて、このthisが指すものがconstであることを示します.つまり、この関数ではデータメンバーを変更できません.constは、このメンバーがオブジェクトの状態を変更しないことを保証します.
メンバー関数を宣言するときにconstキーを使用すると、この関数が「読み取り専用(read-only)」関数であることを説明します.つまり、この関数がデータメンバー(object)を変更しないことを説明します.constメンバー関数を宣言するには、constキーワードを関数カッコの後ろに置きます.宣言も定義もconstキーワードを置くべきです.
データ・メンバーを変更しない関数はconstタイプとして宣言する必要があります.コンパイラは、constメンバー関数を作成するときにデータ・メンバーを誤って変更したり、他の非constメンバー関数を呼び出したりすると、エラーを指摘し、プログラムの堅牢性を向上させるに違いありません.
#include
using namespace std;
class temp
{
public:
    temp(int age);
    int getAge() const;
    void setNum(int num);
private:
    int age;
};

temp::temp(int age)
{
    this->age = age;
}

int temp::getAge() const
{
    age+=10; // #Error...error C2166: l-value specifies const object #
    return age;
}

void main()
{
    temp a(22);
    cout << "age= " << a.getAge() << endl;
}

const関数が宣言されているため、データメンバーを変更することはできませんが、ここでageデータメンバーに10を追加したため、エラーが発生しました.