(一)输入输出重载、赋值运算符重载

#include  
using namespace std;
#include "Time.h"
class CDate
{
 friend ostream& operator<<(ostream&_cout, const CDate&d);
 friend istream& operator>>(istream&_cin, CDate&d);
public:
 CDate(int year = 1900, int month = 1, int day = 1)//全缺省值得构造函数,默认使用此参数,要是给参数就使用给的
  : _year(year)
  , _month(month)
  , _day(day)
 {}
 void Display()
 {
  cout << _year << "-" << _month << "-" << _day << endl;
 }
 CDate& operator=(const CDate&d)//赋值运算符重载
 {
  if (this != &d)
  {
   _year = d._year;
   _month = d._month;
   _day = d._day;
  }
  return *this;
 }
 //返回值operator
 void operator<<(ostream&_cout)
 {
  cout << _year << "-" << _month << "-" << _day << endl;
 }
public:
 int _year;
 int _month;
 int _day;
};
ostream& operator<<(ostream&_cout, const CDate&d)//输出运算符重载
{
 _cout << d._year << "-" << d._month << "-" << d._day << endl;
 return _cout;
}
istream& operator>>(istream&_cin, CDate&d)//输入运算符重载
{
 _cin >> d._year >> d._month >> d._day;
 return _cin;
}
int main()
{
 CDate d1(2016, 3, 28);
 CDate d2;
 d2 = d1;
 cout << d2 << endl;
 cout << &d2 << endl;
 system("pause");
 return 0;
}
结果分析:
d1本来是2016-3-28,d2是1900-1-1,把d1的值赋给d2,d2也变成2016-3-28


三、静态成员函数定义

#include  
using namespace std;
#include "Time.h"
 
int count =0;
 
 
class CDate
{
friend ostream& operator<<(ostream&_cout, const CDate&d);
friend istream& operator>>(istream&_cin, CDate&d);
public:
CDate(int year = 1900, int month = 1, int day = 1)//初始化
: _year(year)
,_month(month)
, _day(day)
{
count++;
cout << "greate cdate" << endl;
}
CDate(const CDate&d)
{
cout << "Greate CDate" << endl;
}
~CDate()
{
count--;
}
 
void Display()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
/*CData& operator=(const CData&d)
{
if (this != &d)
{
_year=d._year;
_month=d._month;
_day=d._day;
}
return *this;
}*/
//返回值operator
void operator<<(ostream&_cout)
{
cout << _year << "-" << _month << "-" << _day << endl;
}
CDate* operator&()
{
return this;
}
static int GetCount()
{
return count;
}
public:
int _year;
int _month;
int _day;
 
static int count;
};
//静态成员定义
//类型 类类型::静态成员名字
int CDate::count = 0;
ostream& operator<<(ostream&_cout, const CDate&d)
{
_cout << d._year << "-" << d._month << "-" << d._day << endl;
return _cout;
}
 
istream& operator>>(istream&_cin, CDate&d)
{
_cin >> d._year >> d._month >> d._day;
return _cin;
}
int main()
{
 
CDate d1(2016, 3, 28);
CDate d2;
d2 = d1;
CDate d4(d1);
 
const CDate d3;
cout << &d3 << endl;
cout << &d2 << endl;
 
cout << d1.GetCount() << endl;
cout << d2.GetCount() << endl;
cout << d3.GetCount() << endl;
cout << d4.GetCount() << endl;
system("pause");
return 0;
}


类的成员函数:几个重载函数_第1张图片