C/C++|封装——类的三大特性之一


前言

本文简单介绍类的三大特性之一——封装。


一、什么是封装?

  • 类的主要组成为:
    • 成员变量(数据)
    • 成员函数(操纵数据的方法)
  • 一般设计类时,默认会将类的成员变量设置为私有(即private,只有在类内或者类的友元才可以访问类的私有成员变量),而将成员函数设置为公有(即public,类外或者类对象都可以访问),这样只对外暴露一种接口而隐藏实现细节就叫做封装。

二、封装的体现

一个简单的玩家类Player如下面代码所示:

#include <iostream>

class Player
{
private:
    std::string m_Name;
    int m_Age;
public:
    Player() : m_Name("Unknow"), m_Age(0){};

    Player(std::string name, int age)
        : m_Name(name), m_Age(age){}
    
    std::string GetName(){ return m_Name; }
    int GetAge(){ return m_Age; }
    friend void ModifyAge(Player& p, int age);
};

void ModifyAge(Player& p, int age){ p.m_Age = age; }

int main()
{
    Player young("Young", 18);
    young.m_Age = 17; //Error: 'm_Age' is a private member of 'Player'
    std::cout << "age: " << young.GetAge() << std::endl;// Output: age: 18
    Modify(young, 17);
    std::cout << "name: " << young.GetName() << std::endl;// Output: name: Young
    std::cout << "age: " << young.GetAge() << std::endl;// Output: age: 17
}

其中,m_Namem_Age是类Player的两个私有成员变量,在类外访问会报错,如这行代码所示young.m_Age = 17;;尽管无法直接使用类对象直接修改私有成员变量,但通过调用类的友元函数,如void Modify(Player& p, int age);可以完成对私有成员变量m_Age的修改。

而通过类对象young可以正常访问两个公有成员函数GetNameGetAge


总结

主要介绍了封装的概念以及通过友元访问类的私有成员变量。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值