C++数据封装
封装,一看这个词,大家就差不多可以了解来他的意思了,所谓的封装就是将内容用一个锁,锁起来,让外部用户无法访问,就这么简单。
有人就要问了,那这和刚刚学习的抽象不是一样的嘛?封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样可以避免受到外界的干扰和误用,从而确保了安全,它引申初刻一个重要的OOP概念,就是数据隐藏。
数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。
C++中我们使用创建类,来支持封装和数据隐藏,我们之前学习过,类包含私有成员(private)、保护对象(protected)和公有成员(public),一般来说我们定义的都是私有的
举个例子:
class Box{
public:double getvolume(void){return l*b*h;}
private:double l;double b;double h;
};
在以上的代码中l、b、h都是私有的额,这意味着它只能被Box类中的其他成员访问,而不能被Box之外的程序访问,这就是封装的一种实现方法。
#include<iostream>using namespace std;class student{
private:string name;int age;
public:student(string NAME,int AGE){name = NAME;age = AGE;}string getname(){return name;}int getage(){return age;}void setname(string NAME){name = NAME;}void setage(int AGE){age = AGE;}void print(){cout << name <<" "<<age<<endl;}
};int main(){student student1("你你你",12);student1.print();student1.setage(12);student1.setname("你好");student1.print();return 0;
}
设计策略
通常情况下,我们都会设置类成员状态为私有(private),除非我们真的需要将其暴露,这样才能保证良好的封装性。
这通常应用于数据成员,但它同样适用于所有成员,包括虚函数。
数据封装的优点
- 数据隐藏: 通过将数据成员声明为私有,防止外部代码直接访问这些数据。
- 提高代码可维护性: 提供公共方法来访问和修改数据,这使得可以在不影响外部代码的情况下修改类的内部实现。
- 增强安全性: 防止不合法的数据输入和不当的修改操作。
- 实现抽象: 提供了一种机制,使得用户不需要了解类的内部实现细节,只需要了解如何使用类的公共接口即可。