回答
#define private public
#define protected public
#define class struct
你去那里:-)
'template
这太棒了。 +1 – kikito 2010-06-09 09:02:03
@ega:实际上,这只是一个笑话。为什么有人想要这样做?封装是一件好事!如果你真的需要碰到私人部件,那么你的设计是有缺陷的,而且你必须重构。 – fredoverflow 2010-06-09 09:09:49
您没有得到*。封装是C++的一项功能。
**除非你做一些黑暗,邪恶,和魔术。*
请参阅[FredOverflow的答案。](http://stackoverflow.com/questions/3002101/how-can-i-violate-encapsulation-property/3004223#3004223)他是这种邪恶的表现。 :) – 2010-06-09 17:14:38
另请参阅[evil:adj。 (来自Jargon文件。)](http://catb.org/jargon/html/E/evil.html) – 2010-06-09 17:16:37
您更改定义有问题的类进行所需的公众成员的标题。换句话说,你移除了封装。不要这样做。
我会认为是“破坏封装”你的意思是“从类外部访问私有成员”。
我知道使用friend classes/methods“合法”做到这一点的唯一方法。
然而,为了使用它们,你将需要修改其具有私有成员的类 - 此时它可能比较简单,只是重新定义从private
一些方法来protected
或public
,视情况而定。
朋友不会破坏封装,因为你可以选择你的朋友是谁。没有你的同意,不会有人可以成为你的朋友。 – fredoverflow 2010-06-09 09:16:06
请看我的第一句话 - 我将“封装”定义为“无法从外部访问私人成员”。这不是一个“标准”或“完整”的定义,但我怀疑这是OP在他的问题上使用的那个。 – kikito 2010-06-09 09:19:41
设计一个镜像类,该类与您试图访问非公共成员的类具有相同的成员,并将该类的对象强制转换为镜像类。
class original
{
private: int x,y,z;
public: int dosomething();
};
class mirror
{
public: int x,y,z;
};
int main()
{
original *o = new original;
mirror *m = (mirror*)o;
m->x = 10;
}
这当然不能保证工作。
- 1. 违反封装?
- 2. JSTL违反封装
- 3. 不属性依赖注入违反封装原则吗?
- 4. 模板模式违反封装?
- 5. 访问者模式和违反封装
- 6. 函数参数是否违反封装?
- 7. 这两个类是否违反封装?
- 8. 它是否违反了接口属性访问器的公共封装?
- 9. 属性和封装
- 10. 有没有可能在ABAP中违反反射封装?
- 11. 为封装创建属性
- 12. 如何解决图书馆密封违规问题?密封违规:封装org.lwjgl.opengl被密封
- 13. 违反了“唯一粒子属性”
- 14. 严格遵守单一责任原则是否违反封装?
- 15. 客户端锁定是否违反同步策略的封装?
- 16. 传递参数给构造函数违反封装?
- 17. 我应该如何在OpenGL中使用变量而不违反封装
- 18. Java如何堆栈类违反替代规则和封装的概念
- 19. 完整性违反违规:Magento
- 20. 封装性能
- 21. 封装属性设计模式
- 22. 在NetBeans 8中封装JavaFX属性?
- 23. 域对象属性和封装
- 24. Onclick html属性调用封装函数
- 25. 封装有关自动属性
- 26. 在属性/上下文类中封装属性
- 27. 如何封装具有类属性的列表?
- 28. java.lang.SecurityException:密封违规:
- 29. 这是一个违反红宝石封装的简单方法吗?
- 30. 如何封装jQuery?
你为什么要这么做? – 2010-06-08 23:36:55
好奇心杀死了猫你知道... – 2010-06-08 23:56:27
我不认为这是值得-1。 +1将其删除。 – kikito 2010-06-10 08:02:44