面试题答案
一键面试封装性的优势
- 数据隐藏:将数据成员设为私有,防止外部直接访问和修改,保护数据的完整性和安全性。
- 提高可维护性:将数据和操作数据的方法封装在一起,当数据结构或操作方式发生变化时,只需在类内部修改,外部调用无需改变。
- 代码模块化:每个类负责特定的功能,使得程序结构更加清晰,易于理解和扩展。
代码示例
#include <iostream>
class BankAccount {
private:
double balance; // 私有数据成员,账户余额
public:
// 构造函数
BankAccount(double initialBalance = 0.0) : balance(initialBalance) {}
// 存款函数
void deposit(double amount) {
if (amount > 0) {
balance += amount;
} else {
std::cout << "存款金额必须为正数。" << std::endl;
}
}
// 取款函数
void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
} else {
std::cout << "取款金额无效或余额不足。" << std::endl;
}
}
// 获取余额函数
double getBalance() const {
return balance;
}
};
int main() {
BankAccount account(1000.0); // 创建一个初始余额为1000的账户
account.deposit(500.0); // 存款500
account.withdraw(300.0); // 取款300
std::cout << "当前账户余额: " << account.getBalance() << std::endl;
return 0;
}
在上述代码中,BankAccount
类将balance
数据成员设为私有,外部代码无法直接访问和修改。通过提供deposit
、withdraw
和getBalance
等公有成员函数来操作和获取余额,在这些函数内部可以进行数据验证和逻辑控制,从而提高了代码的安全性和可维护性。如果后续需要修改余额的存储方式或取款逻辑,只需在类内部修改,不会影响到main
函数中的外部调用。