封装是C++面向对象三大特性之一,用于隐藏对象的内部实现细节,从而保护数据的安全性和完整性,同时提供公共接口供外部调用。
C++中的封装可以通过类的访问权限控制实现。具体来说,可以使用public、private、protected关键字分别限制成员变量和成员函数的访问权限。
其中,public表示该成员可以被任何外部函数访问;private表示该成员只能被类的成员函数访问,不能被外部函数访问;protected表示该成员只能被类的成员函数和继承该类的子类中的成员函数访问。
下面是一个封装的简单实现示例:
class Person {
private:
int age; // 私有成员变量
public:
void setAge(int newAge) { // 公有成员函数
if (newAge < 0) { // 进行合法性判断
cout << "Invalid age!" << endl;
return;
}
age = newAge;
}
int getAge() const { //读取私有成员变量
return age;
}
};
上述代码中,定义了一个Person类,其中age是私有成员变量,setAge和getAge是公有成员函数。setAge用于设置Person类的年龄age,并进行了合法性判断,getAge用于读取age值。由于age是私有成员变量,所以除了类内部的成员函数,外部函数是不能直接访问该值的。
再举一个简单实现的示例,假设我们有一个银行账户类Account,该类具有账户余额balance和密码password两个私有成员变量,以及查询余额getBalance、存钱deposit、取钱withdraw等三个公有成员函数:
class Account {
private:
double balance; // 私有成员变量
string password; // 私有成员变量
public:
double getBalance() const { // 公有成员函数,返回余额
return balance;
}
void deposit(string pwd, double money) { // 存钱函数
if (pwd != password) { // 判断密码是否正确
cout << "Wrong password!" << endl;
return;
}
balance += money;
cout << "Deposit successfully!" << endl;
}
void withdraw(string pwd, double money) { // 取钱函数
if (pwd != password) {
cout << "Wrong password!" << endl;
return;
}
if (balance < money) { // 判断余额是否充足
cout << "Insufficient balance!" << endl;
return;
}
balance -= money;
cout << "Withdraw successfully!" << endl;
}
};
上述代码中,余额和密码是私有成员变量,不能直接被外部函数访问,存钱和取钱函数在判断密码和余额充足性后才进行了操作。
总之,封装是C++面向对象编程中的重要特性,通过它可以保护数据安全、提高软件的可维护性和可重用性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 中封装的含义和简单实现方式 - Python技术站