- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在“C Programming: A Modern Approach”的第 19 章中,介绍了封装的思想(尽管在 C 编程语言中“微不足道”)。
作为实现封装的动机,作者暗示了保护对象不被客户端访问的重要性。引用了有关避免结构内数据字段“损坏”的评论。
也许因为我在软件开发方面总体上还是一个新手(我只写过小程序......只有几个 .h 和 .c 文件),我真的不明白“保护”的必要性对象”。
最终,程序员(使用显式代码)是否决定是否直接访问对象?编译器不会“意外地”访问结构并修改成员,对吧?
根据我的理解,只有当有一段明确的代码说“访问该结构并更改数据”时,“破坏性访问”才会发生......并且大概负责启动该操作的代码段是用户-生成。
因此,封装的唯一目的是保护“程序的目的”免受在整个实际编程过程中发生的用户错误的影响吗?
谢谢!
最佳答案
From my understanding, the “corrupting access” would only occur if there was an explicit piece of code that said “access that structure and alter the data”...and presumably the piece of code responsible for initiating that action was user-generated.
是的,这正是问题所在。如果用户可以访问内部结构/对象/任何东西,那么他们访问的可能性不为零。如果您知道某些内部对象对最终用户没有用,为什么不阻止他们访问它呢?这样您就可以保证您的库按预期工作,因为它的内部结构或对象仅由您自己编写的代码修改。
Perhaps because I am still quite a novice in software development in general (I’ve only ever written small programs...with a few .h and .c files), I don’t really understand the necessity of “protecting objects”.
Ultimately, doesn’t the programmer (with explicit code) dictate whether or not an object is directly accessed? It’s not like the compiler will “accidentally” access a structure and modify members, right?
如果您没有限制对内部对象的访问,您就是将保持内部对象正确的责任放在最终用户身上。对于大型图书馆,这可能很难管理。同样,限制对用户不需要访问的内容的访问是免除他们责任和防止错误的一种方式。
关于c - 在 “encapsulation” 的上下文中,短语 “protecting objects from unwanted accesses by a client” 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63987598/
我是一名优秀的程序员,十分优秀!