C++封装
在 C++ 中,封装 是面向对象编程的三大核心特性之一(封装、继承、多态),其核心思想“将数据(成员变量)和操作数据的方法(成员函数)捆绑在一起,并隐藏内部实现细节,仅通过公开的接口与外界交互”**。
一、封装的本质:数据隐藏与接口暴露
封装的目的是保护数据的安全性和降低代码的耦合度:
- 隐藏内部细节:将类的核心数据(成员变量)和实现逻辑设为私有(
private),防止外界直接修改或误操作。 - 暴露安全接口:通过公开的成员函数(
public)提供对数据的访问和操作,这些接口可以包含校验逻辑,确保数据的合法性。
二、封装的实现:访问修饰符
C++ 通过访问修饰符(public、private、protected)实现封装,控制类成员的访问权限:
private(私有):仅类内部的成员函数可访问,外界(包括派生类)无法直接访问。public(公有):类内部、外界、派生类均可访问,通常用于定义对外接口。protected(保护):类内部和派生类可访问,外界不可访问(主要用于继承场景)。
三、封装的示例:学生类
以“学生”类为例,封装学生的“学号”(不可修改)和“成绩”(可修改但需校验):
|
四、封装的核心优势
数据安全:
私有成员无法被外界直接修改,只能通过公开接口操作,而接口可以包含校验逻辑(如成绩必须在0-100之间),避免数据被非法篡改。隐藏实现细节:
外界只需知道如何通过接口使用类(如调用setScore设置成绩),无需关心类内部如何存储和处理数据(如成绩的存储方式)。如果后续修改内部实现(如将score改为int类型),只要接口不变,外界代码无需修改。降低耦合度:
类的内部变化不会影响依赖它的外部代码,减少了代码间的关联,提高了代码的可维护性。代码复用:
封装好的类可以作为独立模块被多次复用(如上述Student类可在成绩管理系统的多个地方使用)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 宇宙尽头的森林!