定义一个日期的类来实现重载操作符的测试, 完成类中成员函数的定义。 请填空。 #include <iostream> using namespace std; class ClassDate { private: int year; int month; int day; public: ClassDate(int y = 0, int d = 0, int m = 0) { year = y, month = m, day = d; } int getyear() { return year; } int getmonth() { return month; } int getday() { return day; } ______(istream & s, ClassDate & a) { int y, m, d; char c; cout << "请输入日期:(yyyy-mm-dd)"; s >> y >> c >> m >> c >> d; while (y > 9999 || m < 1 || m > 12 || d < 1 || d > 31) { cout << "输入格式有错,重新输入日期:(yyyy-mm-dd)"; s >> y >> c >> m >> c >> d; } a.year = y; a.month = m; a.day = d; return s; } ______(ostream & s, ClassDate & a) { //输出日期 s << "现在的日期是:"; s << a.getyear() << '-' << a.getmonth() << "-" << a.getday() << endl; return s; } }; int main() { ClassDate d(2020, 1, 8); cout << d; cin >> d; cout << d; }
时间: 2024-03-10 20:49:40 浏览: 162
C 填空题集.doc
在代码中,需要填入重载输入流运算符和重载输出流运算符的定义。
重载输入流运算符和重载输出流运算符的定义如下:
```c++
friend istream& operator>>(istream& s, ClassDate& a) {
int y, m, d;
char c;
cout << "请输入日期:(yyyy-mm-dd)";
s >> y >> c >> m >> c >> d;
while (y > 9999 || m < 1 || m > 12 || d < 1 || d > 31) {
cout << "输入格式有错,重新输入日期:(yyyy-mm-dd)";
s >> y >> c >> m >> c >> d;
}
a.year = y;
a.month = m;
a.day = d;
return s;
}
friend ostream& operator<<(ostream& s, ClassDate& a) {
//输出日期
s << "现在的日期是:";
s << a.getyear() << '-' << a.getmonth() << "-" << a.getday() << endl;
return s;
}
```
重载输入流运算符和重载输出流运算符需要在类中声明为友元函数,以访问类的私有成员变量,并且需要分别返回输入流和输出流对象。在输入流运算符中,使用 `>>` 重载符来读取输入的日期,并对其进行格式检查,如果格式有误,则要求重新输入日期。在输出流运算符中,使用 `<<` 重载符来输出日期,并添加一些提示信息。
阅读全文