跳转到内容

C++ 编程/编程语言/范式/封装

来自维基教科书,开放的书籍,开放的世界

封装(也称为信息隐藏)是大型软件项目中常用的概念,用于实现可扩展性。封装背后的原理是将类的内部工作机制隐藏在使用该类的代码之外,只暴露必要的部分。

为什么要这样做?

[编辑 | 编辑源代码]

团队开发项目通常会将任务分成多个部分。设计简洁易懂的接口可以使代码更易于理解。如果团队 A 编写的类中的一个数据成员被团队 B 使用,而该类更改了数据成员的工作方式,则可能会破坏与团队 B 代码的兼容性。维护类的成员数据不仅非常困难,而且对于客户来说也可能非常混乱。封装类的接口就像与客户的协议,声明了它能够做什么。客户不应该关心它是如何完成的,事实上它可以在未来升级,只要它符合相同的接口。

要完全封装一个类,该类中的所有数据成员都必须是私有的。在设计类时,必须确定哪些数据必须是可访问的,哪些数据可以完全隐藏。要公开的数据将需要“访问器函数”,这些函数可以允许对私有数据成员进行读取或存储。

//Non-encapsulated class
class raceCar {
    public:
        void drive()
        int pos;
        int speed;
};
//Encapsulated class
class raceCar {
    public:
        void drive()

        void setSpeed(int s) {m_speed = s;}
        int speed()          {return m_speed;}

        int position()       {return m_pos;}
    private:
        int m_pos;
        int m_speed;
};
华夏公益教科书