构造函数的应用实例——课堂版

一、Timedata

构造一个日期时间类 (Timedate),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间、输出时间、构造函数、析构函数复制构造函数,并完成测试,并在主函数中对应的语句中注释调用了哪个函数。

#include<iostream>
using namespace std;
class Timedata{
	private:
		int nian,yue,ri,hour,min,miao;
	public:
		void out();
		Timedata(int N,int Y,int R,int H,int M,int S);
		~Timedata(){
				cout<<"析构函数的调用"<<endl;
		}
		Timedata(Timedata &d){
			nian = d.nian;yue = d.yue;ri = d.ri;hour = d.hour;min = d.min;miao = d.miao;
		}
		
};
Timedata::Timedata(int N,int Y,int R,int H,int M,int S){
	nian = N;yue = Y;ri = R;hour = H;min = M;miao = S;
}
void Timedata ::out(){
	cout<<nian<<"年"<<
		yue<<"月"<<
		ri<<"日"<<
		hour<<"时"<<
		min<<"分"<<
		miao<<"秒"<<endl;
}
int main(){
	Timedata d1(2003,10,23,3,23,2);//调用构造函数初始化 
	d1.out();//输出日期 
	Timedata d2 = d1;
	d2.out();//输出日期 
} 

二、Rectangle

设计并测试一个矩形类(Rectangle),属性为矩形的左下角与右上角的坐标,矩形水平放置。操作为计算矩形的周长和面积,、构造函数、析构函数复制构造函数并完成测试,并在主函数中对应的语句中注释调用了哪个函数

#include<iostream>
using namespace std;
class Rectangle{
	private:
		int left_x,left_y,right_x,right_y;
	public:
		Rectangle(int x1,int y1,int x2,int y2){
			left_x = x1;left_y = y1;right_x = x2;right_y = y2;
			cout<<"构造函数的调用"<<endl;
		}
		~Rectangle(){
			cout<<"析构函数调用"<<endl; 
		}
		Rectangle(Rectangle &d){
			left_x = d.left_x;left_y = d.left_y;right_x = d.right_x;right_y = d.right_y;
		}
		void S_L(){
			cout<<"面积= "<<(right_x-left_x)*(left_y-right_y)<<endl;
			cout<<"周长= "<<2*((right_x-left_x)+(left_y-right_y))<<endl;
		}
}; 
int main(){
	Rectangle d1(2,4,5,3); 
	Rectangle d2 = d1;//复制构造 
	d2.S_L();
} 

三、Person

设计一个学校在册人员类 (Person)。数据成员包括身份证号 (IdPerson)、姓名(Name)、性别(Sex)、生日 (Birthday) 和家庭住址 (HomeAddress)。成员函数包括人员信息的录入和输出,还包括构造函数与复制构造函数。设计一个合适的初始值。并在主函数中对应的语句中注释调用了哪个函数

#include<iostream>
#include<string>
using namespace std;
class Person{
	private:
		int IdPerson;
		string Name,Sex,Birthday,HomeAddress;
	public:
		void set_xinxi(){
			cout<<"请输入身份证号"<<endl; 
			cin>>IdPerson;
			cout<<"请输入姓名"<<endl;
			cin>>Name;
			cout<<"请输入性别"<<endl;
			cin>>Sex;
			cout<<"请输入生日"<<endl;
			cin>>Birthday;
			cout<<"请输入家庭住址"<<endl;
			cin>>HomeAddress; 
		}
		void out_xinxi(){
			cout<<"身份证号:"<<IdPerson<<endl;
			cout<<"姓名:"<<Name<<endl;
			cout<<"性别:"<<Sex<<endl;
			cout<<"生日:"<<Birthday<<endl;
			cout<<"家庭住址:"<<HomeAddress<<endl;
		}
		Person(){
			cout<<"默认构造函数"<<endl; 
		}
		Person(int I,string N,string S,string B,string H){
			IdPerson = I;Name = N;Sex = S;Birthday = B;HomeAddress = H;
			cout<<"构造函数的调用"<<endl;
		} 
		Person(Person &d){
			IdPerson = d.IdPerson;Name = d.Name;Sex = d.Sex;Birthday = d.Birthday;HomeAddress = d.HomeAddress; 
		}
		
};
int main(){
	Person p1(12345,"某某","男","十月一日","太原市小店区");
	p1.out_xinxi();
	Person p2 = p1;//拷贝构造
	p2.out_xinxi();
	Person p;
	p.set_xinxi();
	p.out_xinxi(); 
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值