<Р> Это нонсенс, чтобы зарплата изменяемые; Вы только что делает его возможным для кода, который получает постоянную объект возиться с зарплатой.
Если работник является постоянным, вы не должны быть возиться с его заработной платы.
<Р> Так что, если вы хотите имя сотрудника и идентификатор постоянной, но не зарплату? Ну, просто не так сказать
<р> класс Сотрудник {общественности: Сотрудник (строка имя = "No Name", строку ID = "000-00-0000", дважды зарплата = 0): _name (имя), _id (ID) {_salary = зарплата; } Строка GetName () строительства {возвращение _name;} Строка GetID () строительства {возвращение _id;} дважды getSalary () строительства {вернуться _salary;} недействительным setSalary (двойной оклад) {_salary = зарплата;} недействительным содействия (двойной оклад) { _salary = зарплата;} частные: строительства строка _name; строительства строка _id; двойной _salary; };
<р> Теперь они постоянны.
Конечно, это означает, что вы можете только установить их в конструкторе.
<Р> Таким образом, если выше безумие не то, что изменяемые для, то, что это? Вот тонкое дело: изменяемый для случае, когда объект является логически постоянным, но на практике нужно изменить. Эти случаи редки, но они существуют <р> Вот один из примеров:. У вас есть постоянный объект, но для отладки хотите, чтобы отслеживать, как часто постоянная метод называется на ней. Логически вы не меняя объект. Обратите внимание, что если вы делаете решения в вашей программе на основе изменяемой переменной, вы почти наверняка нарушило логическую константность и нужно переосмыслить вещи <р> класс Сотрудник {общественности:. Сотрудник (STD :: строительства строка & имя): _name (имя), _access_count (0) {} недействительным set_name (STD :: строительства строка и имя) {_name = имя; } STD :: строка get_name () {строительства _access_count ++; вернуться _name; } INT get_access_count () {возвращение строительства _access_count; } Частные: STD :: строка _name; изменяемые INT _access_count; }; <р> В качестве более сложного примера, вы, возможно, захотите, чтобы кэшировать результаты в дЗаявления и функция Javascript Eval