1. 复制构造函数的说明(作业1,2)
a) 无返回类型。
b) 函数名同类名。
c) 在创建对象、且用本类对象初始化时将被自动调用。
d) 只有1个形参,且为本类对象的应用类型。
e) 若不自定义复制构造函数,系统提供默认的复制构造函数(完成对应数据成员的赋值,浅拷贝);若自定复制构造函数,系统则不再提供复制构造函数。
f) 若类中的数据成员为指针变量,则需要自定义复制构造函数,实现深拷贝;若类中无指针成员,则无需自定义复制构造函数。
2. 对象数组(作业3)
a) 对象数组的创建形式完全依赖于构造函数的形式。
b) 为避免出错,可重载构造函数或为构造函数增加默认参数值。
程序设计练习(在第6次作业的基础上进行修改)
1. 编写圆柱体类cylinder,包含:
名为radius的double型数据成员,表示圆的半径,名为height的double型数据成员,表示高。
无参构造函数,高与半径的值均为1。
有2个参数的构造函数。
增加复制构造函数,完成浅拷贝。
单个数据成员的访问和更改函数,以及两个成员的访问和更改函数。
一个名为getsurfacearea的函数,返回表面积;
一个名为getvolume的函数,返回体积。
编写一个测试程序,它创建1个cylinder类对象c,将半径设置为2,高为10,分别输出对象c的半径、高、表面积和体积。创建第2个对象d,将c赋给d, 分别输出对象d的半径、高、表面积和体积。
/以下为cylinder的声明部分,class cylinder
double radius,height;
public:
cylinder();
cylinder(double h,double r);
cylinder(cylinder&t);
double getheight();
double getradius();
void gethr(double&h,double&r);
void setheight(double);
void setradius(double);
void sethr(double,double);
double getsurfacearea();
double getvolume();
/以下为cylinder类的实现部分,#include ""
#include<>
cylinder::cylinder()
height=1;
radius=1;
cylinder::cylinder(double h,double r)
height=h;
radius=r;
cylinder::cylinder(cylinder &t)
height= ;
radius= ;
cout<<"copy constructor is called."<
double cylinder::getheight()
return height;
double cylinder::getradius()
return radius;
void cylinder::gethr(double &h,double &r)
h=height;
r=radius;
void cylinder::setradius(double r)
radius=r;
void cylinder::setheight(double h)
height=h;
void cylinder::sethr(double h,double r)
height=h;
radius=r;
double cylinder::getsurfacearea()
return 2*3.14*radius*radius+2*3.14*radius*height;
double cylinder::getvolume()
return 3.14*radius*radius*height;
/以下为。#include""
#include<>
void main()
cylinder d(10,2);
cout<< t"< double a,b; (a,b); cout< cout<< cout<< 2. 定义double型数组类carray,包括: 两个数据成员,double型指针变量(表示数组首地址)及整型变量(表示数组长度)。 构造函数,有1个参数且带默认参数值5。 析构函数,释放动态内存。 复制构造函数,完成深拷贝。 设置某个数组元素的值。 获取某个数组元素的值。 测试该数组类: 创建一个包含有10个元素的对象t,为数组元素分别赋值为.5…(按0.5递增),求数组元素的平均值,并输出各个数组元素与平均值。 创建对象s,用t对象进行初始化,计算其平均值,并输出各个数组元素的值及平均值。 类的声明。/定义包含n1个数组元素的double型数组类。 class carray public: carray(int n1=5); carray(carray&t); 复制构造函数原型说明语句。 ~carray double getat(int i); void setat(int i, double x); private: double* pint n 类的实现。#include"" #include<> carray::carray(int n1) n=n1;p=new double[n]; 申请动态内存。 cout<<"constructor is called: " carray::carray(carray&t) /复制构造函数的定义。 n=p=new double[n]; for(int i=0;i p[i]= carray::~carray() delete p; /释放动态内存。 cout<<"destructor is called: " double carray::getat(int i) return p[i]; void carray::setat(int i, double x) p[i]=x; 类的测试。#include " #include <> void main() carray t(10); for(int i=0;i<10;i++) (i,i+0.5); double sum1=0; for(i=0;i<10;i++) sum1+= for(i=0;i<10;i++) cout<< i)< cout< cout< double sum2=0; carray s(t); for(i=0;i<10;i++) cout< cout<} 3. 编写矩形类rectangle,包含: 两个名为width和height的double型数据成员,分别表示矩形的宽和高。 无参构造函数,宽与高的值为1。 有1个参数的构造函数,高的值为1。 有2个参数的构造函数。 析构函数,输出” destructor is called” 及宽、高的值。 单个数据成员的获取函数和设置函数以及对两个数据成员的同时获取的函数和同时设置的函数,各函数名为:getwidth, getheight, setwidth, setheight,setwh,getwh。 一个名为getarea()的函数,返回矩形的面积。 一个名为getperimeter()的函数,返回矩形的周长。 编写一个测试程序,它创建2个rectangle对象数组,将第一个数组的长度为5,每个数组元素的宽/高均为默认值(1,1);第2个对象数组长度为3,宽/高设置为(10,2)、(10,1)、(1,1),并输出两个对象数组各个数组元素的的高、宽,及数组元素的面积之和。 /以下为rectangle类的声明部分,class rectangle private: double width,height; public: rectangle(); rectangle(double); rectangle(double,double); ~rectangle(); double getarea(); double getperimeter(); double getwidth(); double getheight(); void getwh(double&,double&); void setwidth(double); void setheight(double); void setwh(double,double); /以下为rectangle类的实现部分,#include"" #include<> rectangle::rectangle() 1题目 定义一个函数min,求n个数中的平均值 最小数和其下标,并在主函数中打印平均值 最小数和下标。格式 int min int s,int n,double er 注意 如有多个最小值,以第一个为准。输出结果见图 样张。jpg include using namespace std progra... 第七次作业。班级姓名等级 a 夯实基础。一 直接写得数。二 估算。三 用竖式计算。b 能力提升。一 填空题。1 在计算97 41时,可以把97当作 把41看作 这两个新数的乘积是 所以97 41 2 括号里最大能填几?3 不用实际计算,81 390的积是 位数,你的想法是。请你当裁判 对的在括号里画... 实验七 继承与派生 一 1.定义一个shape基类,在此基础上派生出rectangle和circle,二者都有getarea 函数计算对象的面积。使用rectangle类创建一个派生类square。实验分析 首先定义出shape类,然后定义getarea函数,然后派生出rectangle和circl...第7次作业
第7次作业
C 第7次作业