首页 > 后端开发 > C++ > 为什么同一个C类中一个对象可以访问另一个对象的私有数据?

为什么同一个C类中一个对象可以访问另一个对象的私有数据?

Barbara Streisand
发布: 2024-12-10 01:17:17
原创
954 人浏览过

Why Can One Object Access Another's Private Data in the Same C   Class?

为什么同一类的对象可以访问彼此的私有数据?

考虑以下代码片段:

class TrivialClass {
public:
  TrivialClass(const std::string& data) : mData(data) {};

  const std::string& getData(const TrivialClass& rhs) const {
    return rhs.mData;
  };

private:
  std::string mData;
};
登录后复制

奇怪的是,getData()可以访问另一个TrivialClass对象的私有成员mData。为什么允许这样做?

每类访问控制

在 C 中,访问控制是在每个类的基础上实现的,而不是在每个对象的基础上实现的。这意味着同一类的所有对象都具有对该类的私有成员的相同访问权限,无论其状态或它们可能与之交互的任何其他对象如何。

编译时实现

C 访问控制是在编译时强制执行的,这使得实现每个对象的控制变得不切实际。然而,每类控制可以在编译期间高效可靠地实现。

受保护的访问

虽然访问控制通常是针对每个类的,但受保护的访问说明符提供每个对象控制的基本形式。然而,与真正的每对象访问控制相比,这种控制是有限的。

总之,同一类的对象可以访问彼此的私有数据,因为 C 的访问控制机制在每个班级的基础上。这种设计决策可以在编译过程中实现高效、可靠的访问控制实施。

以上是为什么同一个C类中一个对象可以访问另一个对象的私有数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板