【发布时间】:2017-07-24 01:07:30
【问题描述】:
我们都同意公共变量不利于封装等等。但是,我注意到很多代码都在做这种事情:
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;
}
我已经看到很多地方都在使用它,但我不明白为什么。基本上,它返回对数据的引用,从而将其直接暴露给外部。所以封装并没有真正实现,不是从任何角度来看。
为什么常用这个?
【问题讨论】:
-
“为什么常用这个?”因为常见愚蠢。
-
之所以常用,是因为很多程序员并不真正知道自己在做什么。
-
所以他们基本上认为他们正在解决一个问题,而他们所做的只是在他们的代码中添加冗长的代码?
-
正如其他评论者已经说过的那样,这很糟糕。 Look here
-
不幸的是,常见做法和最佳做法并不总是相同的。顺便说一句,我相信这并不常见......
标签: c++ encapsulation getter-setter getter private-members