Я думал, что понятие «константная корректность» было довольно хорошо определено, но когда я говорил об этом с другими людьми, казалось, что у нас были разные представления о том, что это значит. Некоторые говорят, что это программа, имеющая аннотации "const" в максимально возможном количестве мест. Другие определяют программу как константно-правильную тогда и только тогда, когда нет нарушений константности там, где используется константная аннотация (т. Е. Это свойство, которое компилятор проверяет за вас).
Итак, я хотел бы знать, какие из этих функций являются правильными:
struct Person {
string getName1() const { return _name; }
string getName2() { return _name; }
string getName3() const { _name = "John"; return _name; }
string getName4() { _name = "John"; return _name; }
string _name;
};
Я искал в Интернете определения, но не смог найти точного ответа, и у меня также есть подозрения, что может быть случай цитогенеза в игре. Так может ли кто-нибудь дать сколько-нибудь убедительную ссылку на определение?