Я изучаю C++, и я читал это: Если член данных объявлен изменчивым, тогда законно присвоить значение этому элементу данных из функции const member. Но следующий код скомпилирован без какой-либо ошибки или предупреждения от gcc. (Это не реальный пример кода, я просто написал ее, чтобы проверить изменяемые ключевое слово)Mutable variable, измененная функцией non-const member
class M
{
public:
M(){x=10;};
int getX() {x++; return x;};
private:
mutable int x;
};
int main()
{
M xx;
std::cout << xx.getX() << std::endl;
}
не Должен ли я объявить GetX как константы?
Edit 1 (ForEver Ответим делает вещи более ясно), следующий код не будет компилироваться:
class M
{
public:
M(){x=10;};
int getX() const {x++; return x;};
private:
int x;
};
int main()
{
M xx;
std::cout << xx.getX() << std::endl;
}
Это утверждение не говорит о том, что функция-член ** должна быть const. Я рекомендую учиться и понимать 'const' перед обучением' mutable'. –
Обычно что-либо, что разрешено в функции const, также допускается в неконстантной функции. Функция Const более ограничительна, чем не константа. – Spook
Я имею в виду не обиду этим, но как бы вы оценили свое понимание на английском? Проблема здесь в том, что у вас есть основное непонимание смысла этого предложения. –