"<
}
本项目将包括多个版本,开始写程序前,保证搞清楚何为带参数的构造函数、默认构造函数、有默认参数的构造函数、参数初始化表。
(1)使用带参数构造函数,即Triangle(doublex,doubley,doublez),三边长在调用时由实参直接给出。
需要的测试函数是:
int main(){
Triangle Tri(7,8,9); //定义三角形类的一个实例(对象)
Tri.showMessage();
return 0;
}
intmain(){
TriangleTri(7,8,9);//定义三角形类的一个实例(对象)
Tri.showMessage();
return0;
}
(2)设计默认构造函数,即不指定参数时,默认各边长为1。
需要的测试函数是:
int main()
{
Triangle Tri; //调用默认构造函数,不指定参数时,默认各边长为1;
Tri.showMessage();
return 0;
}
intmain()
{
TriangleTri;//调用默认构造函数,不指定参数时,默认各边长为1;
Tri.showMessage();
return0;
}
(3)使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——这个版本也只需要一个构造函数即可。
需要的测试函数是:
int main(){
Triangle Tri1; //定义边长为1 1 1的三角形类实例
Tri1.showMessage();
Triangle Tri2(1.5);//定义边长为1.5 1 1的三角形类实例
Tri2.showMessage();
Triangle Tri3(1.5,1.5);//定义边长为1.5 1.5 1的三角形类实例
Tri3.showMessage();
Triangle Tri4(7,8,9); //定义边长为7 8 9的三角形类实例
Tri4.showMessage();
return 0;
}
intmain(){
TriangleTri1;//定义边长为111的三角形类实例
Tri1.showMessage();
TriangleTri2(1.5);//定义边长为1.511的三角形类实例
Tri2.showMessage();
TriangleTri3(1.5,1.5);//定义边长为1.51.51的三角形类实例
Tri3.showMessage();
TriangleTri4(7,8,9);//定义边长为789的三角形类实例
Tri4.showMessage();
return0;
}
(4)在构造函数中使用参数初始化表对数据成员初始化,这是一种更加提倡的写法。
测试函数同
(1)。
【项目2-分数类的雏形】
C++中提供了多种基本的数据类型。
实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理复数),再如分数。
我们可以自定义类支持这些数据类型。
本任务将设计一个简单的分数类,完成对分数的几个运算。
一则巩固基于对象编程的方法,二则也为运算符重载等积累些感性认识。
分数类的声明为:
classCFraction
{
private:
intnume;//分子
intdeno;//分母
public:
CFraction(intnu=0,intde=1);//构造函数,初始化用
voidset(intnu=0,intde=1);//置值,改变值时用
voidinput();//按照"nu/de"的格式,如"5/2"的形式输入
voidsimplify();//化简(使分子分母没有公因子)
voidamplify(intn);//放大n倍,如2/3放大5倍为10/3
voidoutput(intstyle=0);//输出:
以8/6为例,style为0时,原样输出8/6;
//style为1时,输出化简后形式4/3;
//style为2时,输出1(1/3)形式,表示一又三分之一;
//style为3时,用小数形式输出,如1.3333;
//默认方式0
};
项目要求:
完成分数类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。
实践策略:
(1)不建议一次实现所有成员函数后再调试,而是实现一个,测试一个;
(2)本项目的实现及测试顺序可以是:
先构造函数和输出output函数(可以先只实现一种输出方式),再set函数,再input函数,等等。
以后我们将能够:
(1)定义了inti,j,能用cin>>i>>j;在键盘上输入i和j的值。
以后,定义了CFractionc1,c2,可以用cin>>c1>>c2;输入分数,用cout<(2)i+j完成两个整型数的相加,我们可以通过自行定义成员函数,用c1+c2、c1/c2、c1>c2等,实现分数的四则运算、比较、求倒数等。
【项目3-用对象数组操作长方柱类】
编写基于对象的程序,求5个长方柱的体积和表面积。
长方柱类Bulk的数据成员包括长(length)、宽(width)、高(heigth)等。
对照已经给出的代码,要做的工作及要求有:
需要你定义长方柱类,代码中已经给出由5个长方柱对象构成的对象数组b;
B数组中的前3个对象b[0]、b[1]、b[2]直接参数初始了,需要定义构造函数,而初始化中,各对象提供的参数数目不同,需要有默认参数的构造函数(未给出的参数默认为1.0)
第4个对象b[3]用默认构造函数初始化;
第5个长方柱b[4]定义时不初始化,设计成员函数get_value,由键盘输入长、宽、高;
设计成员函数output,在main中调用输出这5个长方柱的体积和表面积;
intmain()
{
Bulkb[5]={Bulk(2.3,4.5,6.7),Bulk(1.5,3.4),Bulk(10.5)};
b[4].get_value();
//下面分别输出这5个长方柱的体积和表面积
}
【项目4-指向学生类的指针】
设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set、get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索)。
在main函数中,要做到:
建立一个对象数组,通过初始化,设置5个学生的数据,要求:
用指针指向数组首元素,输出第1、3、5个学生的信息;
设计一个函数intmax(Student*arr);,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并返回值其学号。
下面给出部分程序,在此基础上完成项目:
class Student
{
public:
……
private:
int num; //学号
double score; //成绩
};
//max函数返回arr指向的对象数组中的最高成绩(max并不