日期类Date,重载输出运输符<<
时间: 2023-09-24 13:14:26 浏览: 105
可以按照以下方式重载输出运算符<<来输出日期类Date的对象:
```cpp
#include <iostream>
using namespace std;
class Date {
private:
int year, month, day;
public:
Date(int y, int m, int d) : year(y), month(m), day(d) {}
friend ostream& operator<<(ostream& os, const Date& date);
};
ostream& operator<<(ostream& os, const Date& date) {
os << date.year << "-" << date.month << "-" << date.day;
return os;
}
int main() {
Date d(2021, 8, 10);
cout << d << endl;
return 0;
}
```
输出:
```
2021-8-10
```
在上面的代码中,我们使用了友元函数的方式重载输出运算符<<,这样我们就可以直接在cout语句中使用<<符号输出Date对象了。注意,在函数定义中,我们使用了const关键字来表示date对象是不可修改的,这是为了确保我们不会在函数中意外地修改date对象。同时,我们也需要返回ostream类型的引用,这样才能在一个输出语句中连续使用多个<<符号。
相关问题
定义的Date类中增加“>>”、“<<”的重载,实现日期的输入及输出。
好的,下面是实现Date类的输入输出重载的示例代码:
```cpp
#include <iostream>
using namespace std;
class Date {
public:
Date(int year = 1900, int month = 1, int day = 1) {
year_ = year;
month_ = month;
day_ = day;
}
friend ostream& operator<<(ostream& os, const Date& date);
friend istream& operator>>(istream& is, Date& date);
private:
int year_;
int month_;
int day_;
};
ostream& operator<<(ostream& os, const Date& date) {
os << date.year_ << "-" << date.month_ << "-" << date.day_;
return os;
}
istream& operator>>(istream& is, Date& date) {
char c;
is >> date.year_ >> c >> date.month_ >> c >> date.day_;
return is;
}
```
这里使用了友元函数实现了输入输出重载,`<<` 用于输出日期,`>>` 用于输入日期。在 `>>` 重载中,我们首先读入年月日,然后使用一个字符变量 `c` 读取并丢弃掉输入流中的分隔符。最后返回输入流。在 `<<` 重载中,我们直接将日期按照指定格式输出即可。
阅读全文