C++练习题:类的封装与访问控制

第一部分:考点与作答区

考点:

  • 类的定义
  • 成员变量和成员函数的访问控制
  • 封装的原则

作答区: 编写一个C++程序,完成以下要求:

  1. 定义一个名为 Account 的类,包含私有成员变量 balance(整型)和 name(字符串)。
  2. 定义一个公有成员函数 deposit,用于向账户中存款。
  3. 定义一个公有成员函数 withdraw,用于从账户中取款。
  4. 定义一个公有成员函数 getBalance,用于获取账户余额。
  5. main 函数中,创建一个 Account 对象,并调用上述成员函数进行操作。

请在下方空白处编写代码:

// 在此处编写代码
第二部分:解题思路与答案

解题思路:

  1. 首先,定义一个名为 Account 的类,并为其添加私有成员变量 balance(整型)和 name(字符串)。私有成员变量只能被类内部访问。
  2. 定义公有成员函数 depositwithdrawgetBalance。这些函数可以被类外部访问,但它们只能访问私有成员变量。
  3. 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 的类,并为其添加了私有成员变量 balancename。然后,我们定义了三个公有成员函数:depositwithdrawgetBalance。这些函数可以被类外部访问,但它们只能访问私有成员变量。在 main 函数中,我们创建了一个 Account 对象,并调用了这些成员函数进行操作。

第三部分:扩展考点与扩展作答区

扩展考点:

  • 成员函数的重载
  • 友元函数和友元类

扩展作答区: 在原有程序的基础上,增加以下功能:

  1. 修改 Account 类,为 deposit 函数添加一个重载版本,接受一个字符串参数表示存款金额。
  2. 定义一个名为 Bank 的类,包含一个友元函数 getBalance,用于获取 Account 对象的余额。

请在下方空白处编写代码:

// 在此处编写代码
第四部分:扩展解答思路与答案

扩展解答思路:

  1. Account 类中,为 deposit 函数添加一个重载版本,接受一个字符串参数表示存款金额。这样可以方便地使用户输入金额时可以以字符串形式输入。
  2. 定义一个名为 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 对象,并调用了这些成员函数进行操作。

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值