第四章作业
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<