C++笔记:关于类3

构造函数,析构函数,拷贝构造函数
可以设断点,然后一步一步看,这样比较容易懂
慢慢来,会好的

#include<iostream>
using namespace std;
class MyDate
{public://如果不写public就会默认为private
	MyDate()//显示默认构造函数
	{

	}
	MyDate(int x,int y,int z)//构造函数,显示构造函数会覆盖默认的构造函数
	{
		year = x;
		month = y;
		day = z;
	}
	MyDate(const MyDate &d)//拷贝构造函数
	{
		year = d.year;
		month = d.month;
		day = d.day;
	}
	void InitMyDate()
	{
		cout << "year	" << "month	" << "day	" << endl;
		cin >> year;
		cin >> month;
		cin >> day;
	}
	bool IsLeapYear()
	{
		if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
			return true;
		else
			return false;
	}
	void PrintMyDate()
	{
		cout << year <<"年"<< month<<"月" << day <<"日"<< endl;
	}
	int GetYear()//为了获得year,可以使用此公开成员函数
	{
		return year;
	}
	~MyDate()//析构函数
	{
		cout<<"调用析构函数"<<endl;
	}
private:
	int year;
	int month;
	int day;
};
void print()
{
	MyDate date2(2019,8,23);//调用构造函数
	date2.PrintMyDate() ;
}//调用析构函数
int main()
{
	MyDate date4;//因为前边已经有显示默认构造函数,所以编译不会报错
	//会使用默认初始化,如果输出,会出现乱码
	MyDate date1(2020, 10, 10);//MyDate date1;写成这种形式,编译器会报错:不存在默认构造函数
	date1.PrintMyDate();
	date1.InitMyDate();//会覆盖2020 12 12
	date1.PrintMyDate();
	if (date1.IsLeapYear() == 1)
		cout << date1.GetYear() << "是闰年" << endl;//date1.year是不对的,year是私有成员,此处已经是类外
	else
		cout << date1.GetYear() << "不是闰年" << endl;
	MyDate date3 = date1;//调用拷贝构造函数
	date3.PrintMyDate();
	//MyDate date3;这个调用默认构造函数,不会调用拷贝构造函数
	//date3 = date1;这个调用赋值操作符
	print();
	system("pause");
	return 0;
}

结果如下图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值