代码之家  ›  专栏  ›  技术社区  ›  ark1974

友元函数违反封装吗?[关闭]

  •  3
  • ark1974  · 技术社区  · 7 年前

    friend 函数在我看来是个小问题。做 朋友 函数违反了封装的概念?

    有什么替代方法 朋友 塞特 & 与仅使用成员函数相比,成员函数有助于提高封装性 ?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Geezer    7 年前

    friend 函数违反了封装的概念?

    事实上, 不是这样的 public 会员可以。是 成员是否违反了封装的概念?显然不是。更重要的是,在许多情况下 增加封装而不是破坏它,因为它允许您维护 private 私有的 ,而不必使用 私有的 肉眼看不见的。这与在代码中传递意图相反,当被注意到时,应该发出一个危险信号。 允许您缓解此问题,因为它使您能够控制到底谁可以访问这些保留的成员 让每个人都知道他们是。 The C++ FAQ raises one example 朋友 解决一个设计问题,这样您就可以对未增加的点的访问进行控制 完全 可以访问的代码量 部分。

    一个简单的helper类/函数以及setter&getter成员函数不应该拯救这个设计缺陷吗?

    好吧,使用helper类肯定可以满足 朋友 是的,但很多时候都比仅仅使用 朋友 . 关于函数或getter/setter,我觉得这就像 直接暴露的成员 私有的 其缺点如上所述。

    ... 或者它不应该被视为一个糟糕的设计实践吗?

    作为结束语,在这里尽量避免主观的问题,比如某物是否应该被视为X。让我们坚持事实!: )

        2
  •  1
  •   Christian Hackl    7 年前

    friend函数是否违反了封装的概念

    封装,因为另一种方法是 public