C++程序设计课后习题及解答(第四章)

第四章作业

4-3.构造函数和析构函数有什么作用?

答:

构造函数作用:在对象被创建的时候利用特定的值构造对象,将对象初始化为一个特定的状态。

析构函数的作用:用来完成对象被删除之前的一些清理工作,也就是专门做扫尾工作的。

 

4-6.什么叫做复制构造函数?复制构造函数何时被调用?

答:

复制构造函数是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类对象的引用。其作用是使用一个已经存在在对象(由复制构造函数的参数指定),去初始化同类的一个新对象。

复制构造函数被调用的情况:

1.当用类的一个对象去初始化该类的另一个对象。2.如果函数的形参是类的对象,调用函数时,进行形参和实参结合时。3.如果函数的返回值是类的对象,函数执行完成返回调用者时。

 

4-9.设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角的两个点的坐标,根据坐标能算出矩形的面积。

答:

#include
usingnamespace std;
class  Rectangle
{
         public:
                   void get_seat_standard(intdown_left=0,int up_right=0);
                   void ShowArea();
         private:
                   int DL,UR,area;
};
void  Rectangle::get_seat_standard(int down_left,int up_right)
{
         DL=down_left;
         UR=up_right;
         area=DL*UR;
}
inline  void Rectangle::ShowArea()
{
         cout<<"The rectangle's areais:"<>DL>>UR;
         mysquare.get_seat_standard(DL,UR);
         mysquare.ShowArea();
         return 0;
}
 


4-10.设计一个用于人事管理的“人员”类。由于考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号、性别、出生日期、身份证号等。其中“出生日期”声明为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、复制构造函数、内联成员函数、带默认形参值得成员函数、类的组合。

答:

 

#include
#include
#include
usingnamespace std;
classdate
{
public:
         date(int y=0,int m=0,intd=0):year(y),month(m),day(d){}
         date(date &d)
         {
                   year=d.year;
                   month=d.month;
                   day=d.day;
                   cout<<"用到了date类的复制构造函数!"<>ye>>mo>>da;
         cout<<"请输入您的编号、性别、和身份证号码:";
         cin>>nu>>se>>id;
         date A(ye,mo,da);
         date B(A);
         person C(nu,se,B,id);
         person D(C);
         D.showperson();
         return (0);
}
 


4-20.定义一个负数类Complex,使得下面的代码能够工作。

Complex  c1(3,5);                              //用复数3+5i初始化c1

Complex  c2=4.5;                              //用实数4.5初始化c2

C1.add(c2);                                           //将c1与C2相加,结果保存在c1中

C1.show();                                         //将c1输出(这时的结果应该是7.5+5i);

 

答:

#include
using namespace std;
 
class  Complex
{
         public:
                   Complex(double r,doublei):real(r),image(i){}
                   Complex(doubler):real(r),image(0){}
                   void show();
                   void add(Complex c2);
 
         private:
                   double real,image;
};
 
void  Complex::add(Complex c2)
{
         real+=c2.real;
         image+=c2.image;
}
void  Complex::show()
{
         cout<


你可能感兴趣的:(C,C++编程技巧)