C++ Primer Plus第十章复习题

1、什么是类?

答:

类是用户定义的类型的定义。类声明指定了数据将如何存储,同时指定了用来访问和操纵这些数据的方法(类成员函数)。

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

答:

类表示人们可以类方法的公有接口对类对象执行的操作,这是抽象

类的数据成员可以是私有的(默认值),这意味着只能通过成员函数来访问这些数据,这是数据隐藏

实现的具体细节(如数据表示和方法的代码)都是隐藏的,这是封装

3、对象和类之间的关系是什么?

答:类定义了一种类型,包括如何使用它。对象是一个变量或其他数据对象(如由new生成的),并根据类定义被创建和使用。类和对象之间的关系同标准类型与其变量之间的关系相同。

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

答:如果创建给定类的多个对象,则每个对象都有其自己的数据内存空间;但所有的对象都使用同一组成员函数(通常,方法是公有的,而数据是私有的,但这只是策略方面的问题,而不是对类的要求)。

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

创建一个对象并将其初始化;

显示储户姓名、账号和存款;

存入参数指定的存款;

取出参数指定的款型;

请提供类声明,而不用给出方法实现。

答:

class BankAccount
{
private:
    char name [40]; 
    char acctnum[25];
    double balance;
public:
    BankAccount (const char * client,const char * num,double bal = 0.0);
    void show(void) const;
    void deposit (double cash);
    void withdraw (double cash);
};

6、类构造函数在何时被调用?类析构函数呢?

答:在创建类对象或显式调用构造函数时,类的构造函数都将被调用。当对象过期时,类的析构函数将被调用。

7、给出复习题5中的银行账户类的构造函数的代码。

答:

有两种可能的解决方案(要使用strncpy(),必须包含头文件cstring或string.h;要使用string类,必须包含头文件string:
BankAccount ::BankAccount (const char * client,const char * num,double bal)
{
    strncpy(name,client,39);
    name [39] ='\0';
    strncpy (acctnum,num,24);
    acctnum[24] =' \0';
    balance = bal;
}
或者:
BankAccount :: BankAccount (const std: :string & client,const std: :string & num,double bal)
{
    name = client;
    acctnum = num;
    balance = bal;
}
请记住,默认参数位于原型中,而不是函数定义中。

8、什么是默认构造函数,拥有默认构造函数有何好处?

答:默认构造函数是没有参数或所有参数都有默认值的构造函数。拥有默认构造函数后,可以声明对象,而不初始化它,即使已经定义了初始化构造函数。它还使得能够声明数组。
 

9、修改Stock类的定义,使之包含返回各个数据成员值的成员函数。注意:返回公司名的成员杉树不应为修改数组提供便利,也就是说,不能简单的返回string引用。

答:

#ifndef sTOCK30_H_
#define sTOCK30_H_
class stock
{
private:
    std::string company;
    long shares;
    double share_val;
    double total_val;
    void set_tot() 
    { 
        total_val = shares * share_val; 
    }
public:
    stock ();
    Stock (const std: :string & co,long n,double pr);
    ~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;
    int numshares () const 
    { 
        return shares; 
    }
    double shareval() const 
    { 
        return share_val; 
    }
    double totalval() const 
    { 
        return total_val; 
    }
    const string & co_name ( ) const 
    { 
        return company;
    }
};

10、this和*this是什么?

答: this 指针是类方法可以使用的指针,它指向用于调用方法的对象。因此,this是对象的地址*this是对象本身

  • 21
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值