封装(2.访问权限)

本文探讨了面向对象编程中的封装原则,强调通过成员函数而非直接修改成员变量来操作对象。C++中提供了private、protected和public三种访问权限,其中private用于隐藏成员变量,确保对象状态的正确性。设计类时,应将成员函数设为public,成员变量设为private,以实现公开接口并隐藏实现细节。
摘要由CSDN通过智能技术生成

访问权限

使用成员函数来操作对象,而不是成员变量

上一节我们看到,可以定义类来将一类事物的属性和方法放到一起,然后创建该类的对象,通过访问对象的属性和方法成员来操作对象。但是直接修改对象的属性并不是一个好主意。有些属性值是不被允许的,比如,使用上一节定义的人类时,设置age值的时候可能将它设置为负数:

int main()
{
    Human p;
    ...
    p.age = -20;
    ...
}

有些属性值之间是相互关联的,比如,如果Human类还有体力属性,该属性值是与年龄属性值相关的,那么直接修改年龄值而不修改体力值也是错误的。

从上面简单的例子就可以看到,通过成员变量来操作对象是不明智的,应该要通过成员函数。相比于成员变量,成员函数可以封装更加复杂的逻辑。在类的使用者眼里,类提供了各种成员函数来完成各个功能,只要知道成员函数的调用方式(成员函数声明、或者称为类的接口),不需要知道类的成员变量以及成员函数的实现(类的实现)。

这就是设计类时的一个原则:公开(函数)接口,隐藏(内部)实现。

因此,要修改对象的属性值(这也属于“操作对象”),可以给类添加访问属性值的“set”和”get”函数

#include <iostream>
#include <string>
using namespace std;
class Human{
    public:
        string name;
        bool is_male;        
        int age;
        string id;
        void introduce();
        void read();
        // 设置年龄
        void set_age(int a){
            age = a;
        }
        // 获知年龄
        int get_age(){
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值