跳转至

复习题

第 10 章 对象和类 复习题

  1. 什么是类?

    将抽象转换为用户自定义类型的工具。类声明指定数据如何存储,也指定了访问和操作数据的方法。

  2. 类是如何实现抽象、封装和数据隐藏?

    • 抽象:通过类方法的公有接口来对类对象进行操作。
    • 数据隐藏:类的数据成员是私有成员。只能通过类声明中的成员函数类访问。
    • 封装:具体的实现细节(数据表示和类方法)都是隐藏。
  3. 对象和类之前的关系是什么?

    类似标准类型与变量之间的关系。类定义是一种类型,包含了如何使用它。对象则是一个变量,可以根据类定义的场景去创建和使用。

  4. 除了是函数之外,类函数成员与类数据成员之间的区别是什么?

    类成员函数可直接对类数据成员直接进行访问。

  5. 定义一个类来表示银行账户。数据成员包括储户姓名、账号(使用字符串)和存款。成员函数执行如下操作。

    • 创建一个对象并将其初始化
    • 显示储户姓名、账号和存款
    • 取出参数指定的款项 请提供类声明,而不用给出方法实现(实现可查看编程练习题1)
#include <string>
class bankAccount
{
    private:
        char name[30]; //账户使用者 std::string name;
        std::string accountNum[20]; // 账号,声明字符串的长度
        double savings; //存款
    public:
        bankAccount(const std::string & user,const std::string accNum,double save=0.0);
        void show() const; //显示信息
        void withdraw(double cash_num); // 取出钱
        void capital(double cash_num); //本金
}
  1. 类构造函数在何时被调用?类析构函数?

    • 类构造函数:在创建对象或显式调用构造函数时,会被调用。
    • 类析构函数:当对象过期时被自动调用。
  2. 给出复习题5中的银行账户类的构造函数的代码。

1
2
3
4
5
6
7
bankAccount(const std::string & user,const std::string accNum,double save=0.0)
    strncpy(name,user,29); //将user中的29个字符拷贝给name
    name[29]='\0';
    strncpy(accountNum,accNum,19);
    accountNum[19]='\0'; //字符串的结尾会有一个\0结束符
    savings=save;
}
  1. 什么是默认构造函数?拥有默认构造函数有何好处?

    • 默认构造函数:没有参数或默认参数都有各自默认值。
    • 好处:可声明对象而不初始化(即使是已经定义了初始化的构造函数),也可声明数组。
  2. 修改Stock类的定义(Stock20.h中的版本),使之包含返回各个数据成员值的成员函数。注意:返回公司名的成员函数不应为修改数组提供便利,也就是说,不能简单地返回string引用。

//修改后版本
#include <string>
class Stock
{
    private:
        std::string company;
        long shares;
        double share_val;
        double total_val;
        void set_tot(){total_val = shares * share_val;}
    public:
        // 2个构造函数
        Stock(); // 默认构造函数
        Stock(const std::string & co, long n = 0, double pr = 0.0);
        ~Stock(); //析构函数
        void buy(long num,double price);
        void sell(long num,double price);
        void update(double price);
        void show() const;
        const Stock &topval(const Stock &s) const;
        // 直接通过const成员函数的繁华似来进行返回值的设置
        const std::string & co_name() const{return company;}
        int sharesNum() const {return shares;}
        double shareVal() const{return share_val;}
        double totalVal() const {return total_val;} 
};
  1. this 和 *this 是什么?

    • this:this指针是类方法可使用的指针,指向用于调用方法的对象。
    • this:对象的地址, this是对象本身。