C++関数の後にconst修飾を加える
978 ワード
隠したthisポインタにconstを付けて、このthisが指すものがconstであることを示します.つまり、この関数ではデータメンバーを変更できません.constは、このメンバーがオブジェクトの状態を変更しないことを保証します.
メンバー関数を宣言するときにconstキーを使用すると、この関数が「読み取り専用(read-only)」関数であることを説明します.つまり、この関数がデータメンバー(object)を変更しないことを説明します.constメンバー関数を宣言するには、constキーワードを関数カッコの後ろに置きます.宣言も定義もconstキーワードを置くべきです.
データ・メンバーを変更しない関数はconstタイプとして宣言する必要があります.コンパイラは、constメンバー関数を作成するときにデータ・メンバーを誤って変更したり、他の非constメンバー関数を呼び出したりすると、エラーを指摘し、プログラムの堅牢性を向上させるに違いありません.
const関数が宣言されているため、データメンバーを変更することはできませんが、ここでageデータメンバーに10を追加したため、エラーが発生しました.
メンバー関数を宣言するときに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を追加したため、エラーが発生しました.