大学から、constメソッドはフィールドを変更できないと思いました。 私はC++に戻っています。私は簡単なプログラムを書いています。C++言語のconstメソッド
#include "stdafx.h"
#include <iostream>
using namespace std;
class Box
{
int a;
int b;
int square;
public:
Box(int a, int b)
{
this->a = a;
this->b = b;
}
const void showSquare(void) const
{
cout << this->a * this->b << endl;
}
const void setDim(int a, int b)
{
this->a = a;
this->b = b;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Box b(2, 4);
b.showSquare();
b.setDim(2, 5);
b.showSquare();
int a;
cin >> a;
return 0;
}
私の場合、constメソッドはクラスのフィールドを変更できますか? どうすれば可能ですか?
あなたより先です。
const void setDim(int a、int b)は、constメソッドの適切なシグネチャではありません。それは 'void setDim(int a、int b)const'です。 –
'showSquare()'は "フィールド"を変更しないことを示すために 'const'を使います。 'setDim()'は 'const'を使って関数の戻り値が変わらないことを示します(無意味ですが、' void'を返すときには許されます)が、関数が "fields"を変更するかどうかは関係ありません。 – Peter