第一部分:考点与作答区
考点:
- 类的定义
- 成员变量和成员函数的访问控制
- 封装的原则
作答区: 编写一个C++程序,完成以下要求:
- 定义一个名为
Account
的类,包含私有成员变量balance
(整型)和name
(字符串)。 - 定义一个公有成员函数
deposit
,用于向账户中存款。 - 定义一个公有成员函数
withdraw
,用于从账户中取款。 - 定义一个公有成员函数
getBalance
,用于获取账户余额。 - 在
main
函数中,创建一个Account
对象,并调用上述成员函数进行操作。
请在下方空白处编写代码:
// 在此处编写代码
第二部分:解题思路与答案
解题思路:
- 首先,定义一个名为
Account
的类,并为其添加私有成员变量balance
(整型)和name
(字符串)。私有成员变量只能被类内部访问。 - 定义公有成员函数
deposit
,withdraw
和getBalance
。这些函数可以被类外部访问,但它们只能访问私有成员变量。 - 在
main
函数中,创建一个Account
对象,并调用这些成员函数进行操作。
答案:
#include <iostream>
#include <string>
// 定义 Account 类
class Account {
private:
int balance;
std::string name;
public:
// 构造函数
Account(const std::string &_name, int _balance) : name(_name), balance(_balance) {}
// 存款成员函数
void deposit(int amount) {
balance += amount;
}
// 取款成员函数
bool withdraw(int amount) {
if (amount > balance) {
return false;
}
balance -= amount;
return true;
}
// 获取余额成员函数
int getBalance() const {
return balance;
}
};
int main() {
// 创建 Account 对象
Account account("John Doe", 1000);
// 调用 deposit 函数
account.deposit(500);
std::cout << "Balance after deposit: " << account.getBalance() << std::endl;
// 调用 withdraw 函数
if (account.withdraw(200)) {
std::cout << "Balance after withdrawal: " << account.getBalance() << std::endl;
} else {
std::cout << "Insufficient funds." << std::endl;
}
return 0;
}
在这段代码中,我们首先定义了一个名为 Account
的类,并为其添加了私有成员变量 balance
和 name
。然后,我们定义了三个公有成员函数:deposit
、withdraw
和 getBalance
。这些函数可以被类外部访问,但它们只能访问私有成员变量。在 main
函数中,我们创建了一个 Account
对象,并调用了这些成员函数进行操作。
第三部分:扩展考点与扩展作答区
扩展考点:
- 成员函数的重载
- 友元函数和友元类
扩展作答区: 在原有程序的基础上,增加以下功能:
- 修改
Account
类,为deposit
函数添加一个重载版本,接受一个字符串参数表示存款金额。 - 定义一个名为
Bank
的类,包含一个友元函数getBalance
,用于获取Account
对象的余额。
请在下方空白处编写代码:
// 在此处编写代码
第四部分:扩展解答思路与答案
扩展解答思路:
- 在
Account
类中,为deposit
函数添加一个重载版本,接受一个字符串参数表示存款金额。这样可以方便地使用户输入金额时可以以字符串形式输入。 - 定义一个名为
Bank
的类,并为其添加一个友元函数getBalance
,用于获取Account
对象的余额。友元函数可以访问私有成员变量,但需要在类定义中声明。
答案:
#include <iostream>
#include <string>
// 定义 Account 类
class Account {
private:
int balance;
std::string name;
public:
// 构造函数
Account(const std::string &_name, int _balance) : name(_name), balance(_balance) {}
// 存款成员函数(重载版本)
void deposit(const std::string &amount) {
balance += std::stoi(amount);
}
// 取款成员函数
bool withdraw(int amount) {
if (amount > balance) {
return false;
}
balance -= amount;
return true;
}
// 获取余额成员函数
int getBalance() const {
return balance;
}
};
// 定义 Bank 类
class Bank {
// 声明 Account 类为友元类
friend class Account;
public:
// 友元函数,用于获取 Account 对象的余额
static int getBalance(const Account &account) {
return account.getBalance();
}
};
int main() {
// 创建 Account 对象
Account account("John Doe", 1000);
// 调用 deposit 函数(重载版本)
account.deposit("500");
std::cout << "Balance after deposit: " << Bank::getBalance(account) << std::endl;
// 调用 withdraw 函数
if (account.withdraw(200)) {
std::cout << "Balance after withdrawal: " << Bank::getBalance(account) << std::endl;
} else {
std::cout << "Insufficient funds." << std::endl;
}
return 0;
www.hzcwrc.com
www.dzxjrc.com
www.gzcyrc.com
www.hzscrcw.com
www.sjsrcw.com
}
在这段代码中,我们首先修改了 Account
类,为 deposit
函数添加了一个重载版本,接受一个字符串参数表示存款金额。然后,我们定义了一个名为 Bank
的类,并声明 Account
类为友元类,以便在 Bank
类中访问 Account
类的私有成员变量。我们为 Bank
类添加了一个友元函数 getBalance
,用于获取 Account
对象的余额。在 main
函数中,我们创建了一个 Account
对象,并调用了这些成员函数进行操作。