C++ 中封装的含义和简单实现方式

封装是C++面向对象三大特性之一,用于隐藏对象的内部实现细节,从而保护数据的安全性和完整性,同时提供公共接口供外部调用。

C++中的封装可以通过类的访问权限控制实现。具体来说,可以使用public、private、protected关键字分别限制成员变量和成员函数的访问权限。

其中,public表示该成员可以被任何外部函数访问;private表示该成员只能被类的成员函数访问,不能被外部函数访问;protected表示该成员只能被类的成员函数和继承该类的子类中的成员函数访问。

下面是一个封装的简单实现示例:

class Person {
private:
    int age;   // 私有成员变量
public:
    void setAge(int newAge) {   // 公有成员函数
        if (newAge < 0) {   // 进行合法性判断
            cout << "Invalid age!" << endl;
            return;
        }
        age = newAge;
    }
    int getAge() const {   //读取私有成员变量
        return age;
    }
};

上述代码中,定义了一个Person类,其中age是私有成员变量,setAge和getAge是公有成员函数。setAge用于设置Person类的年龄age,并进行了合法性判断,getAge用于读取age值。由于age是私有成员变量,所以除了类内部的成员函数,外部函数是不能直接访问该值的。

再举一个简单实现的示例,假设我们有一个银行账户类Account,该类具有账户余额balance和密码password两个私有成员变量,以及查询余额getBalance、存钱deposit、取钱withdraw等三个公有成员函数:

class Account {
private:
    double balance;   // 私有成员变量
    string password;  // 私有成员变量
public:
    double getBalance() const {   // 公有成员函数,返回余额
        return balance;
    }
    void deposit(string pwd, double money) {   // 存钱函数
        if (pwd != password) {   // 判断密码是否正确
            cout << "Wrong password!" << endl;
            return;
        }
        balance += money;
        cout << "Deposit successfully!" << endl;
    }
    void withdraw(string pwd, double money) {   // 取钱函数
        if (pwd != password) {
            cout << "Wrong password!" << endl;
            return;
        }
        if (balance < money) {   // 判断余额是否充足
            cout << "Insufficient balance!" << endl;
            return;
        }
        balance -= money;
        cout << "Withdraw successfully!" << endl;
    }
};

上述代码中,余额和密码是私有成员变量,不能直接被外部函数访问,存钱和取钱函数在判断密码和余额充足性后才进行了操作。

总之,封装是C++面向对象编程中的重要特性,通过它可以保护数据安全、提高软件的可维护性和可重用性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 中封装的含义和简单实现方式 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • microsoftsynctoy文件同步工具

    Microsoft SyncToy 文件同步工具 文件同步工具在日常生活和工作中有着不可替代的作用。Microsoft SyncToy 是微软推出的一款能够进行文件同步和备份的工具。本文将详细介绍 Microsoft SyncToy 的使用方法和注意事项。 下载和安装 Microsoft SyncToy 是免费提供的,您可以在官方网站(https://www…

    其他 2023年3月29日
    00
  • Win11小组件提示加载此内容时出现错误怎么办?

    当使用Win11的小组件时,有时会遇到错误提示“加载此内容时出现错误”,这主要是由于小组件所需要的资源无法正常加载或使用系统配置错误所导致。以下是排除此问题的攻略: 1. 检查系统更新 有时Win11小组件无法正常加载是因为Windows 11的补丁更新未成功安装造成的,因此我们应该检查系统是否为最新版本并安装所有可用的更新。具体步骤如下: 打开Window…

    other 2023年6月25日
    00
  • Yii 框架应用(Applications)操作实例详解

    Yii 框架应用(Applications)操作实例详解 Yii是一款高性能、面向对象的PHP Web开发框架。本文将详细讲解Yii框架的应用操作实例,包含以下内容: 建立一个简单的应用 使用控制器(controller)和URL路由(URL routing) 使用视图(view)和模板(layout) 创建数据模型(model)和数据库表(table) 使…

    other 2023年6月27日
    00
  • js常用工具

    JavaScript是一种广泛使用的编程语言,用于开发Web应用程序和其他类型的应用程序。在JavaScript开发中,有许多常用的工具和库,可以帮助开发人员更轻松地完成任务。以下是一个完整攻略,介绍了JavaScript中常用的工具和库。 步骤1:使用jQuery库 jQuery是一种流行的JavaScript库,用于简化DOM操作事件处理、AJAX请求等…

    other 2023年5月6日
    00
  • Android 访问文件权限的四种模式介绍

    Android 访问文件权限的四种模式介绍 在Android开发中,访问文件权限是一个重要的话题。Android提供了四种不同的文件访问权限模式,分别是: 私有模式(Private Mode):在私有模式下,应用程序可以创建和访问其私有目录中的文件。其他应用程序无法直接访问这些文件。这种模式适用于应用程序需要保存用户数据或配置信息的情况。以下是一个示例: F…

    other 2023年9月6日
    00
  • Java封装、继承、多态三大特征的理解

    Java封装、继承、多态三大特征是Java面向对象编程的核心概念。理解这三个特征对于Java程序员来说至关重要。下面分别进行详细讲解。 Java封装 Java封装是把类的数据和方法封装在一起,然后通过访问修饰符设置哪些数据和方法可以被其他类访问,哪些不可以。这样做可以防止对类的数据和方法进行非法访问。 访问修饰符包括public、private、protec…

    other 2023年6月25日
    00
  • 怎样批量修改文件为不同文件名?批量修改文件为不同文件名方法

    要批量修改文件为不同文件名,您可以使用命令行工具或脚本语言。 使用命令行工具 1.使用cp命令复制多个文件并修改文件名 cp old_file1 new_file1 && cp old_file2 new_file2 && cp old_file3 new_file3 使用&&运算符,可以在一个命令行中同时执行…

    other 2023年6月26日
    00
  • Go语言接口的嵌套的具体使用

    Go语言接口的嵌套的具体使用攻略 在Go语言中,接口的嵌套是一种强大的特性,它允许我们将多个接口组合成一个新的接口。这种组合可以帮助我们更好地组织和复用代码。下面是关于Go语言接口嵌套的详细攻略。 1. 接口嵌套的基本概念 接口嵌套是指在一个接口中嵌入另一个接口。被嵌套的接口称为内嵌接口,嵌套接口可以继承内嵌接口的所有方法。通过接口嵌套,我们可以将多个接口的…

    other 2023年7月27日
    00
合作推广
合作推广
分享本页
返回顶部