#include <iostream> using namespace std; class Date {public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month; int day; int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y) { } Date::Date(int m,int d):month(m),day(d) {year=2005;} Date::Date(int m):month(m) {day=1; year=2005; } Date::Date() {month=1; day=1; year=2005; } void Date::display() {cout<<month<<"/"<<day<<"/"<<year<<endl;} int main() { Date d1(10,13,2005); Date d2(12,30); Date d3(10); Date d4; d1.display(); d2.display(); d3.display(); d4.display(); return 0; }
时间: 2024-03-31 21:36:42 浏览: 28
这段代码定义了一个名为Date的类,它有四个构造函数和一个display()函数。四个构造函数分别用于初始化月、日、年的值,display()函数用于输出日期。在main()函数中,我们使用这四个构造函数分别创建了四个Date对象d1、d2、d3、d4,并且调用了它们的display()函数输出了它们的日期。
相关问题
定义类date的带默认值(为2018年7月1日)的函数与复制构造函数 #include <iostream> using namespace std; class date { private: int year,month,day; public: date( 1 ) { year=y; month=m; day=d;} date( 2 ) { year=d1.year; month=d1.month ;day=d1.day ; } }; int main() { date d1(2004,10,8); date d2=d1; return 0; }
可以按照以下方式定义类date的带默认值的构造函数和复制构造函数:
```c++
#include <iostream>
using namespace std;
class date {
private:
int year, month, day;
public:
date(int y=2018, int m=7, int d=1) {
year = y;
month = m;
day = d;
}
date(const date& d1) {
year = d1.year;
month = d1.month;
day = d1.day;
}
};
int main() {
date d1(2004, 10, 8);
date d2 = d1;
return 0;
}
```
在这个例子中,类date的构造函数有三个参数,分别代表年、月、日。在构造函数中,可以使用默认参数来指定默认值。复制构造函数的参数是一个date对象的引用,它将另一个date对象复制到当前对象。在main函数中,我们使用构造函数创建一个日期对象d1,然后使用复制构造函数将其复制到另一个日期对象d2。
#include<iostream> using namespace std; class CDate { private: int day, month, year; public: CDate(int Aday, int Bmonth, int Cyear); void print(); bool operateor > (CDate& D); CDate operateor + (CDate & E); CDate operateor + (int C); CDate operateor++(int); }; 请指出该函数在visal studio中的错误并修改,以及实现一个操作符重载:操作符重载例子-日期类,实现》,+日期,+天,后置++,四种运算符,写出主函数并测试
修改后的代码:
```cpp
#include<iostream>
using namespace std;
class CDate
{
private:
int day, month, year;
public:
CDate(int Aday, int Bmonth, int Cyear);
void print();
bool operator > (CDate& D);
CDate operator + (CDate & E);
CDate operator + (int C);
CDate operator ++(int);
};
CDate::CDate(int Aday, int Bmonth, int Cyear)
{
day = Aday;
month = Bmonth;
year = Cyear;
}
void CDate::print()
{
cout << year << "-" << month << "-" << day << endl;
}
bool CDate::operator > (CDate& D)
{
if(year > D.year)
return true;
else if(year == D.year && month > D.month)
return true;
else if(year == D.year && month == D.month && day > D.day)
return true;
else
return false;
}
CDate CDate::operator + (CDate & E)
{
int d = day + E.day;
int m = month + E.month;
int y = year + E.year;
if(d > 30)
{
d -= 30;
m += 1;
}
if(m > 12)
{
m -= 12;
y += 1;
}
return CDate(d, m, y);
}
CDate CDate::operator + (int C)
{
int d = day + C;
int m = month;
int y = year;
if(d > 30)
{
d -= 30;
m += 1;
}
if(m > 12)
{
m -= 12;
y += 1;
}
return CDate(d, m, y);
}
CDate CDate::operator ++(int)
{
CDate temp(day, month, year);
day += 1;
if(day > 30)
{
day -= 30;
month += 1;
}
if(month > 12)
{
month -= 12;
year += 1;
}
return temp;
}
int main()
{
CDate date1(25, 5, 2021);
CDate date2(10, 6, 2021);
CDate date3 = date1 + date2;
date1.print();
date2.print();
date3.print();
CDate date4 = date1 + 10;
date4.print();
CDate date5 = date1++;
date5.print();
date1.print();
return 0;
}
```
操作符重载的实现:
我们重载了四个运算符:大于号、加号、后置++和加整数。
在类的定义中,需要在函数名前加上`operator`关键字,如`bool operator > (CDate& D);`。
实现后置++运算符时,需要接收一个int类型的参数,但是该参数并没有用到,只是为了区分前置++运算符。
主函数的测试结果如下:
```
2021-5-25
2021-6-10
2021-7-5
2021-6-4
2021-5-25
2021-5-26
```