Мы все можем согласиться с тем, что общедоступные переменные являются плохими для инкапсуляции и всего этого. Тем не менее, я заметил много кода, который делает этот тип материала:
class foo {
private:
int integer_;
string someString_;
// other variables
public:
int& integer() { return integer_; }
string& someString() { return someString_; }
// other "functions"
}
int main() {
foo f;
f.integer() = 10;
f.someString() = "something";
return 0;
}
Я видел, что это используется во многих местах, и я не понимаю почему. В основном он возвращает ссылку на данные и, таким образом, выставляет ее непосредственно снаружи. Таким образом, инкапсуляция на самом деле не достигается, а не с любой точки зрения.
Почему это обычно используется?