有人要求我解释什么是封装,我回答说:“将修改数据的数据和函数捆绑在一起,称为封装。”
答案之后是另一个问题--“因此,根据您的定义,如果我从类的成员函数修改全局变量,那么封装就会被违反。”
回答是的是有道理的。
我不知道我的解释是错的还是下面的问题是正确的,我对它的回答是正确的。
有人能帮忙吗。
发布于 2016-03-05 11:04:36
引用维基百科
在编程语言中,封装用于指两个相关但不同的概念之一,有时还指其中的组合:
在我看来,后续问题的答案是主观的,这取决于对封装概念的解释。
例如,如果封装数据被限制为类的成员变量,则不会发生冲突。每个人都可以访问不属于对象的全局变量,因此,通过成员函数访问它并不包含任何封装冲突。
另一方面,如果您认为封装应该应用于整个程序,那么这个全局变量应该绑定到一个对象,因此,对它的原始访问构成了封装冲突。
底线是,答案在于神学领域,这意味着它取决于封装是如何解释不同的编程教条。
发布于 2016-03-05 11:04:49
这取决于如何定义和访问全局变量。
假设头文件包含声明,但不包含成员函数的定义,以及包含类成员实现的相应实现文件。
现在,将此头文件中定义的全局变量定义为内部链接1 (static
)。或放置在未命名的命名空间中。它是一个全局变量,但在功能上与private
static
类成员没有区别。
这是难闻的代码,但是,我要说,这个变量是正确封装的:
https://stackoverflow.com/questions/35818314
复制