C++数据封装:守护代码安全的核心机制
C++程序由两大基本要素构成:
- 程序语句(代码):执行动作,称函数。
- 程序数据:受函数操作影响的信息。
封装:将数据与操作数据的函数绑定在一起,并防止外部干扰与误用。封装引出数据隐藏。
区别:封装是“打包数据+函数”,抽象是“仅暴露接口隐藏实现”。
C++通过类实现封装与数据隐藏。类默认成员私有。示例:
class Box {
public:
double getVolume() { return length * breadth * height; }
private:
double length, breadth, height; // 私有,仅类内可访问
};
public后的成员对全程序可见。友元类会暴露实现细节、削弱封装,最佳实践:尽可能隐藏细节。
数据封装示例:Adder类(同抽象示例,侧重封装视角)
#include <iostream>
using namespace std;
class Adder {
public:
Adder(int i = 0) { total = i; }
void addNum(int number) { total += number; }
int getTotal() { return total; }
private:
int total; // 封装在内部,外部不可见
};
int main() {
Adder a;
a.addNum(10); a.addNum(20); a.addNum(30);
cout << "Total " << a.getTotal() << endl; // 60
return 0;
}
公共接口addNum/getTotal,私有数据total。外部通过接口间接操作数据,数据安全受保护。
设计策略
默认私有,按需公开。最常应用于数据成员,同等适用于所有成员(含虚函数)。这是良好封装的基石。
C语言
- 深入理解 C++ 数据类型:基础类型、修饰符与最佳实践
- 掌握 C++ 运算符:六大类型全解析与实战示例
- C++类与对象:面向对象编程实战指南
- C++ 类模板实战指南:编写灵活的类型无关代码
- C++ char 类型完全指南:声明、ASCII 码、输入输出与字符串转换
- C++存储类别全解析:auto/register/static/extern/mutable作用域与生命周期
- C++数据结构实战:结构体struct定义、访问、函数参数、指针与typedef别名
- C++多态实战指南:虚函数、动态绑定与纯虚函数
- C++数据抽象实战:接口与实现分离的设计艺术
- 精通 Java 封装:数据隐藏实战指南
- Java 封装机制:数据隐藏、访问控制与不变量保护
- Java 经典数据结构:Vector、Stack、Hashtable 等遗留类详解