[C++]8.3-8.4 析构函数,复制构造函数(深拷贝)(作业)

[C++]8.3-8.4 析构函数,复制构造函数(深拷贝)(作业),第1张

[C++]8.3-8.4 析构函数,复制构造函数(深拷贝)(作业)

看到了就点个赞赞嘛~ ヾ(≧▽≦*)o~

第六周作业

*初学C++,想要把每周老师布置的实验题和自己写的程序记录下来,方便期末整理复习,请多多指教!
老师要求用的版本比较老,是Microsoft Visual C++ 2010 Express。



*)


一、 集合类的声明和对象的定义

声明一个集合类,有成员数据:int a[10];

成员函数
构造函数(要求完成对数组a中所有元素的初始化);
输出的成员函数,要求每行输出5个数;
判断一个数是否在数组中的函数,如果在数组中,返回数组中下标的值。


main()完成对象的定义和相关成员函数的测试。


#include
using namespace std;

class A
{
	int a[10];
public:
	A(int b[10])
	{
		int i;
		for(i=0;i<10;i++)
			a[i]=b[i];
	}
	void Cout()
	{
		int i;
		for(i=0;i<10;i++)
		{
			if(i%5==0)cout<<'\n';
			cout<<a[i]<<'\t';
		}
		cout<<'\n';
	}
	void Check(int p)
	{
		int i,t=0;
		for(i=0;i<10;i++)
			if(p==a[i])
				cout<<"您所需要找的数在数组中,下标为:"<<i<<endl,t++;
		if(!t)cout<<"没有找到!"<<endl;
	}

};

void main()
{
	int b[10],j,p;
	cout<<"请给数组中的十个数赋值(整型数):"<<endl;
	for(j=0;j<10;j++)cin>>b[j];
	A A1(b);
	A1.Cout();
	cout<<"请输入需要检查的整型数:"<<'\n'<<endl;
	cin>>p;
	A1.Check(p);

	getchar();
	getchar();

}


二、职工类的声明和对象的定义

1.题目要求

声明一个职工类,有成员数据:工号、姓名、性别、基本工资、奖金、总工资;要求有如下成员函数:构造函数修改基本工资奖金的函数输出所有成员的函数



main()完成对象的定义和有关成员函数的测试。


2.分析

构造函数中,总工资可以通过计算得到,所以不需要通过形式参数对总工资进行初始化。


请完成程序代码的编写、调试,并得到正确结果。


声明一个职工类,有成员数据:工号、姓名、性别、基本工资、奖金、总工资;要求有如下成员函数:
构造函数、修改基本工资和奖金的函数、输出所有成员的函数。


main()完成对象的定义和有关成员函数的测试。


*/ #include #include #include #include using namespace std; class workers { double Num; char Name[10],Sex[5]; double Pay,Bonus,SumPay; public: workers(double num,char name[10],char sex[5],double pay,double bonus) { Num=num,Pay=pay,Bonus=bonus; strcpy(Name,name),strcpy(Sex,sex); cout<<"构造函数被调用"<<endl; } void renew(double pay,double bonus) { Pay=pay; Bonus=bonus; } void Display() { SumPay=Pay+Bonus; cout<<"工号:"<<Num<<'\t'<<"姓名:"<<Name<<'\t'<<"性别:"<<Sex<<endl; cout<<"基本工资:"<<Pay<<'\t'<<"奖金:"<<Bonus<<'\t'<<"总工资:"<<SumPay<<'\n'<<endl; } }; void main() { int num; char name[10],sex[5]; double pay,bonus,b,p; cout<<"请输入工人的工号(纯数字)、姓名"<<endl; cin>>num; cin.getline(name,10); cout<<"请输入工人的性别:"<<endl; cin.getline(sex,4); cout<<"请输入工人基本工资,奖金:"<<endl; cin>>pay>>bonus; workers w1(num,name,sex,pay,bonus); w1.Display(); cout<<"请输入更改后的基本工资和奖金:"<<endl; cin>>p>>b; w1.renew(p,b); w1.Display(); getchar(); getchar(); }


三、通讯录类的声明和对象的定义

声明一个通讯录类,含姓名、地址、电话号码成员数据,其中 姓名电话号码使用字符数组, 地址 使用字符类型的指针成员


要求有如下成员函数:
构造函数拷贝构造函数析构函数输出所有成员的函数


main()完成对象的定义和有关成员函数的测试。


/*通讯录类的声明和对象的定义
声明一个通讯录类,含姓名、地址、电话号码成员数据,其中姓名和电话号码使用字符数组,地址
使用字符类型的指针成员。


要求有如下成员函数:构造函数、拷贝构造函数、析构函数、输出所有成员的函数。


main()完成对象的定义和有关成员函数的测试。


*/ #include #include using namespace std; class list { char Name[50],Num[30]; char *Addr; public: list(char *name,char *num,char*addr) { strcpy(Name,name); strcpy(Num,num); Addr=new char[strlen(name)+1]; strcpy(Addr,addr); cout<<"调用了构造函数"<<endl; } list(list &p) { strcpy(Name,p.Name); strcpy(Num,p.Num); if(p.Addr){ Addr=new char[strlen(p.Addr)+1]; strcpy(Addr,p.Addr); }else Addr=0; cout<<"调用了复制构造函数"<<endl; } ~list() { if(Addr) delete[]Addr; cout<<"调用了析构函数"<<endl; } void Display() { cout<<"姓名:"<<Name<<'\t'<<"电话号码:"<<Num<<'\t'<<"地址"<<Addr<<endl; } }; void main() { char name[50],num[30],a[100]; char *addr=a; cout<<"请输入联系人的姓名:"<<endl; cin.getline(name,50); cout<<"请输入联系人的电话号码:"<<endl; cin.getline(num,30); cout<<"请输入联系人的家庭住址:"<<endl; cin.getline(a,100); list L1(name,num,addr),L2(L1); L1.Display(); L2.Display(); L2.~list(); L1.~list(); getchar(); getchar(); }


四、线性表类的声明和对象的定义:

声明一个线性表类,有成员数据: float * List;(指向线性表的指针)、int Max;(线性表的长度)、int Num;(线性表中实际元素个数)。



要求有如下成员函数:构造函数、拷贝构造函数、析构函数、在线性表尾增加一个元素、输出所有成员的函数。



main()完成对象的定义和有关成员函数的测试

/*线性表类的声明和对象的定义:
声明-一个线性表类,有成员数据: float * List;(指向线性表的指针)、int Max;(线性表的长度)、int Num;(线性表中实际元素个数)。


要求有如下成员函数:构造函数、拷贝构造函数、析构函数、在线性表尾增加一个元素、输出所有成员的函数。


main()完成对象的定义和有关成员函数的测试。


*/ #include #include using namespace std; class LineList { float*List; int Max,Num; public: LineList(int n=10) { List=new float[n]; Max=n; Num=0; cout<<"调用了构造函数"<<'\n'<<endl; } LineList(LineList &p) { Max=p.Max; Num=p.Num; List=new float[p.Max]; int i; for(i=0;i<Num;i++) List[i]=p.List[i]; cout<<"调用了复制构造函数"<<'\n'<<endl; } ~LineList() { if(List) delete[]List; cout<<"调用了析构函数"<<'\n'<<endl; } void Add(float x) { if(Num<Max)List[Num++]=x; else { float *list;int i; Max++,Num++; list=new float[Max+4]; for(i=0;i<Num;i++)list[i]=List[i]; delete List; list[i]=x; List=list; } } void Display() { cout<<"线性表的长度:"<<'\t'<<Max<<'\t'<<"线性表中实际元素个数:"<<'\t'<<Num<<endl; int i; for(i=0;i<Num;i++) cout<<List[i]<<'\t'; cout<<'\n'; } }; void main() { int n,i,m,x; float a[88]; cout<<"请输入线性表的长度n:"<<endl; cin>>n; cout<<"请输入线性表的线性表中实际元素个数m:"<<endl; cin>>m; cout<<"请依次输入线性表中的元素:"<<endl; for(i=0;i<m;i++) cin>>a[i]; LineList L1(n); for(i=0;i<m;i++) { L1.Add(a[i]); } L1.Display(); cout<<"请输入您想添加的一个实型数:"<<endl; cin>>x; L1.Add(x); cout<<"添加数字后的线性表为:"<<endl; L1.Display(); LineList L2(L1); L2.Display(); L2.~LineList(); L1.~LineList(); getchar(); getchar(); }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/577795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存