【问题标题】:default visibility of C++ class/struct membersC++ 类/结构成员的默认可见性
【发布时间】:2010-11-17 21:05:07
【问题描述】:

在 C++ 中,为什么私有是类成员的默认可见性,而对于结构是公共的?

【问题讨论】:

    标签: c++ class struct member


    【解决方案1】:

    因为类是面向对象的常用方法,这意味着成员变量应该是私有的并且具有公共访问器 - 这对于创建 low coupling 很有用。另一方面,结构必须与 C 结构兼容,后者始终是公共的(C 中没有公共和私有的概念),并且不使用访问器/修改器。

    【讨论】:

      【解决方案2】:

      C++ 是作为 C 的超集引入的。结构是从 C 继承而来的,其中成员的语义是公共的。存在大量 C 代码,包括希望与 C++ 一起使用的库,它们使用结构。类是在 C++ 中引入的,为了符合 OO 的封装哲学,它们的成员默认是私有的。

      【讨论】:

      • 好吧,公平地说,封装并不是所有成员都是私有的。使用 C++ 内联,访问器方法可以非常便宜,但在许多 OOP 语言中,考虑到函数调用的开销,人们倾向于使用公共访问,因为它更便宜。为了更好地控制,如果他们的语言支持,可以使用属性声明。但是,在本机代码中,跟踪变量更改比托管语言更难,因此通过代码中的单个点设置属性是有意义的。
      【解决方案3】:

      可能是为了向后兼容 C 结构。这样,在 C 代码中声明的结构体在用于 C++ 代码时将继续以相同的方式工作。

      【讨论】:

        猜你喜欢
        • 2011-04-15
        • 2012-11-22
        • 2016-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        相关资源
        最近更新 更多