如果我在类成员函数的定义中使用全局变量,是否违反了封装?

pas*_*sha 5 c++ encapsulation

我被要求解释什么是封装,我回答说"捆绑修改这些数据的数据和函数,称为封装".

答案之后是另一个问题 - "因此,根据您的定义,如果我从类的成员函数修改全局变量,则会违反封装."

回答"是"是有道理的.

我不确定我的解释是否错误或者问题是否有效,我的回答是肯定的.

有人可以帮忙.

101*_*010 1

引用维基百科

在编程语言中,封装用于指两个相关但不同的概念之一,有时也指它们的组合:

  • 用于限制对某些对象组件的访问的语言机制。
  • 一种语言结构,有助于将数据与操作该数据的方法(或其他函数)捆绑在一起

以我的拙见,后续问题的答案是主观的,它取决于对封装概念的解释。

例如,如果封装数据仅限于类的成员变量,则并不违规。不属于对象的全局变量可以被每个人访问,因此,通过成员函数访问它不存在任何封装违规。

另一方面,如果您认为封装应该应用于整个程序,那么这个全局变量应该被绑定到一个对象,因此,对它的原始访问构成了封装违规。

最重要的是,答案在于神学领域,这意味着它取决于不同的编程教条如何解释封装。