【发布时间】:2013-11-17 08:32:16
【问题描述】:
class test {
public:
test(int value = 0): x(value) {}
int& get(){
return x;
}
private:
int x;
};
这将允许客户端代码改变私有成员
这在 C++ 中是合法的,但为什么呢?
在任何情况下您实际上需要打破类封装?
【问题讨论】:
-
容器经常使用它,以便对容器的索引行为自然。
-
你没有破坏封装。没有什么能阻止你,
class test的编码人员,改变游戏和提供该参考的后端。您的代码的用户仍会获得一个热整数引用,您选择公开。如果你不想这样做,坦率地说,不要。 -
"为什么" 这是一个语言规范。你最好问问 C++ 发明者。
标签: c++ language-design