打印类中的一些变量,此时就需要使用函数或者重载,为了提高代码可读性,一般使用操作符重载来书写,而cout并不在c++的默认类成员函数中,需要我们自己书写。第一种写在类中如下面的代码(我们以日期类举例,较《c++primer》中的书店类更加容易讲解做笔记)
对输出运算符的重载
void operator<<(ostream& out)
{
out << _year << "-" << _month << "-" << _day << endl;
}
会出现一个问题,只能写成
d<<cout //打印d中的年月日
因为函数的第一个参数是this指针,第二个参数才是我们传进去的 out,但是这与std中的cout使用习惯完全不符,我们的所打印变量是应该在cout的右边,如 cout<<d<<endl.
这样的重载和普通的函数没有两样,也就失去了重载函数的目的所在。
那么这样,我们便不可以把输出运算符的重载写成成员函数,写成成员函数去实现功能,能实现功能 但失去重载本身的意义。
那么我们将输出运算符的重载
那么我们在类外写重载函数,此时输出运算符的重载函数是一个全局的。
void operator<<(ostream& out,const Date& d)
{
out << d._year << "-" <<