C++实现BankAccount类:含构造、封装与静态成员并附测试代码
# BankAccount类设计与实现 以下是符合要求的BankAccount类C++实现: ```cpp #include <iostream> #include <string> #include <random> #include <iomanip> class BankAccount { private: std::string accountNumber; std::string ownerName; double balance; static int totalAccounts; public: // 有参构造函数 BankAccount(const std::string& accNum, const std::string& name, double initialBalance) : accountNumber(accNum), ownerName(name), balance(initialBalance) { totalAccounts++; } // 无参构造函数 BankAccount() : ownerName("Anonymous"), balance(0) { // 生成随机账号 ACC-XXX static int counter = 1; std::ostringstream oss; oss << "ACC-" << std::setw(3) << std::setfill('0') << counter++; accountNumber = oss.str(); totalAccounts++; } // 获取账号 std::string getAccountNumber() const { return accountNumber; } // 获取户名 std::string getOwnerName() const { return ownerName; } // 获取余额(只读) double getBalance() const { return balance; } // 存款 void deposit(double amount) { if (amount > 0) { balance += amount; } } // 取款 bool withdraw(double amount) { if (amount > 0 && balance >= amount) { balance -= amount; return true; } return false; } // 静态方法:获取总账户数 static int getTotalAccounts() { return totalAccounts; } }; // 初始化静态成员 int BankAccount::totalAccounts = 0; int main() { // 测试有参构造函数 BankAccount account1("12345678", "张三", 1000.0); std::cout << "账户1: " << account1.getAccountNumber() << ", " << account1.getOwnerName() << ", 余额: " << account1.getBalance() << std::endl; // 测试无参构造函数 BankAccount account2; std::cout << "账户2: " << account2.getAccountNumber() << ", " << account2.getOwnerName() << ", 余额: " << account2.getBalance() << std::endl; // 测试存款 account1.deposit(500.0); std::cout << "账户1存款500后余额: " << account1.getBalance() << std::endl; // 测试取款 if (account1.withdraw(200.0)) { std::cout << "账户1取款200成功,余额: " << account1.getBalance() << std::endl; } else { std::cout << "账户1取款失败" << std::endl; } // 测试余额不足取款 if (account1.withdraw(2000.0)) { std::cout << "账户1取款2000成功" << std::endl; } else { std::cout << "账户1取款2000失败,余额不足" << std::endl; } // 测试静态方法 std::cout << "总账户数: " << BankAccount::getTotalAccounts() << std::endl; return 0; } ``` ## 代码说明 1. 构造函数: - 有参构造函数初始化账号、户名和余额 - 无参构造函数生成随机账号(格式ACC-XXX),默认户名"Anonymous",余额0 2. 属性封装: - 余额balance通过私有成员实现只读 - 提供deposit()和withdraw()方法修改余额 - withdraw()方法会验证余额是否充足 3. 静态成员: - totalAccounts统计所有账户总数 - getTotalAccounts()返回当前总账户数 4. 主函数测试: - 创建有参和无参账户 - 测试存款和取款功能 - 验证余额不足时的取款处理 - 输出总账户数 ## 注意事项 1. 静态成员变量totalAccounts需要在类外初始化 2. 无参构造函数中的随机账号生成使用静态计数器确保唯一性 3. withdraw()方法返回bool表示操作是否成功 ######[AI写代码神器 | 963点数解答 | 2025-04-13 15:50:48]
- 深度解析:`bankaccount *account` 与 `bankaccount account` 在代码中的差异( | 174点数解答 | 2024-08-08 15:43:13)314
- 详解银行账户管理代码:开户、存款与取款功能实现(讯飞星火 | 195点数解答 | 2024-08-08 14:53:52)312
- 超详细!逐行解读银行账户管理代码的含义、作用与用法(讯飞星火 | 152点数解答 | 2024-08-08 14:58:48)330
- C语言:银行账户结构体与操作函数的代码解析及使用示例(讯飞星火 | 298点数解答 | 2024-08-08 15:01:11)306
- 代码揭秘:bankaccount *account 的含义与功能解析( | 124点数解答 | 2024-08-08 15:12:48)346
- C 语言揭秘:`bankaccount *account` 与 `account->balance += amount` 的原理及作用 ( | 161点数解答 | 2024-08-08 15:18:14)323
- 代码解析:指针与结构体在银行账户系统中的作用与好处( | 201点数解答 | 2024-08-08 15:39:09)292
- 揭秘:为何 bankaccounttest 函数用 bankaccount account 而非 bankaccount *account? (字节豆包 | 218点数解答 | 2024-08-08 15:48:26)432
- 解惑:为何deposit函数printf无&,另一函数却有?代码奥秘大揭秘! (字节豆包 | 132点数解答 | 2024-08-08 15:53:07)285
- 揭秘:为何printf中getbalance函数传参的account前要加&? (字节豆包 | 121点数解答 | 2024-08-08 15:56:21)333
- C 语言揭秘:openaccount、deposit、withdraw 函数中 account 前加 & 的原因 (字节豆包 | 142点数解答 | 2024-08-08 16:03:25)330
- 揭秘:C 语言中 bankaccount 结构体作用及使用方法( | 210点数解答 | 2024-08-08 15:08:58)223