[C++]8.3-8.4 析构函数,复制构造函数深拷贝作业
[C ]8.3-8.4 析构函数,复制构造函数(深拷贝)(作业)
看到了就点个赞赞嘛~ ヾ(≧▽≦*)o~
第六周作业
(
*初学C ,想要把每周老师布置的实验题和自己写的程序记录下来,方便期末整理复习,请多多指教!
老师要求用的版本比较老,是Microsoft Visual C 2010 Express。
*)
一、 集合类的声明和对象的定义
声明一个集合类,有成员数据:int a[10];
有成员函数:
构造函数(要求完成对数组a中所有元素的初始化);
输出的成员函数,要求每行输出5个数;
判断一个数是否在数组中的函数,如果在数组中,返回数组中下标的值。
main()完成对象的定义和相关成员函数的测试。
#include<iostream>
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<iostream>
#include<string>
#include<cstring>
#include <stdlib.h>
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<iostream>
#include<string>
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<iostream>
#include<string>
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();
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhieakge
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22