• [C++]封装


    一、封装的定义

    封装是面向对象编程(OOP)的三大基本特性之一(封装、继承、多态)。它指的是将数据(属性)和操作这些数据的方法(函数)结合成一个独立的单元(类),并尽可能隐藏对象的内部细节,仅对外公开接口。这样做的目的是保护对象的数据,防止外部代码直接访问对象内部的数据结构,减少错误并简化复杂性。

    二、封装的目的

    1. 数据隐藏:保护对象的数据,避免外部直接访问,防止数据被非法修改。
    2. 接口明确:通过公开有限的接口(方法),使外部代码只能通过这些接口与对象交互,从而明确对象的行为。
    3. 模块化:将相关的数据和操作封装在一起,提高了代码的模块化和可重用性。

    三、C++中实现封装的方法

    1. 使用类(Class):定义类时,将数据成员(属性)设为私有(private)或保护(protected),而将操作这些数据的方法设为公有(public)。这样,外部代码就无法直接访问类的私有成员,只能通过公有方法间接访问。

    2. 访问修饰符

      • public:任何外部代码都可以访问。
      • protected:只能在类本身、派生类(子类)中访问。
      • private:只能在类本身中访问,派生类也不能访问。
    3. 构造函数和析构函数:通过构造函数初始化对象,通过析构函数清理对象占用的资源。它们也是封装的一部分,因为它们控制对象的生命周期。

    四、示例

    下面是一个简单的C++封装示例,展示了一个Rectangle(矩形)类的实现。

    1. #include
    2. class Rectangle {
    3. private:
    4. double width; // 矩形的宽
    5. double height; // 矩形的高
    6. public:
    7. // 构造函数
    8. Rectangle(double w, double h) : width(w), height(h) {}
    9. // 设置宽度
    10. void setWidth(double w) {
    11. width = w;
    12. }
    13. // 获取宽度
    14. double getWidth() const {
    15. return width;
    16. }
    17. // 设置高度
    18. void setHeight(double h) {
    19. height = h;
    20. }
    21. // 获取高度
    22. double getHeight() const {
    23. return height;
    24. }
    25. // 计算面积
    26. double getArea() const {
    27. return width * height;
    28. }
    29. };
    30. int main() {
    31. Rectangle rect(5.0, 10.0);
    32. std::cout << "Rectangle area: " << rect.getArea() << std::endl;
    33. rect.setWidth(7.0);
    34. std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
    35. return 0;
    36. }

     在这个例子中,Rectangle类将widthheight属性设为私有,外部代码无法直接访问它们。相反,我们通过公有方法(如setWidthgetHeightgetArea)来访问和修改这些私有属性。这种方式实现了数据的封装,同时提供了清晰的接口供外部使用。

  • 相关阅读:
    如何保护数据安全?企业该从部署SSL证书开始
    python+pytest接口自动化(3)-接口测试一般流程及方法
    spring复习01,IOC的思想和第一个spring程序helloWorld
    牛客网刷题记录 || 指针
    adb下载安装及使用教程
    怎么样学习pmp知识?
    Rocky linux8.8系统通过packstack安装OpenStack yoga版本
    NumPy和Pandas中的广播
    【跟小嘉学习区块链】二、Hyperledger Fabric 架构详解
    Python 3.14 将比 C++ 更快
  • 原文地址:https://blog.csdn.net/weixin_45843323/article/details/140364857