В C++, когда я должен сделать метод постоянным?
Название моего вопроса в значительной степени задает все это. Недавно я обнаружил, что это хорошая практика программирования на C++ - передавать множество значений по константной ссылке и помечать определенные методы в классах как постоянный метод. Прямо сейчас, у меня есть библиотека, которую я писал для себя некоторое время, которая не имеет абсолютной корректности, поэтому я хотел бы начать исправлять это постепенно.
В каких конкретных случаях я должен сделать метод постоянным? До сих пор я знаю, что методы "getter" должны обычно делаться постоянными (поскольку код в одном не должен изменять какие-либо переменные класса), но я делаю это для всех методов, которые считаются getter, или только для определенных? И кроме методов получения, какие другие сценарии должны делать методы постоянными?
2 ответа
Когда я должен сделать метод постоянным?
Как правило, вы должны делать метод постоянным всякий раз, когда ни одна из переменных-членов объекта не изменяется.
В качестве дополнительного руководства, вы должны делать это только тогда, когда вы уверены, что метод не будет изменен в будущем для изменения переменных-членов.
В конечном итоге, если вы планируете, чтобы метод влиял на переменные-члены, он должен быть непостоянным. В противном случае оно должно быть постоянным.
но я делаю это для всех методов, которые считаются получателями, или только для определенных?
Вы должны сделать это для всех методов, которые не изменяют неизменяемые члены. Они включают в себя не только функции получения, но и любые перегруженные операторские функции, такие как operator==
, operator!=
, operator<
,