还是前面运算符重载的有关问题~

还是前面运算符重载的问题~~~~~~
//-----------------------------
class   Time{
int   hour,minute,second;
public:
void   set(int   h,int   m,int   s){
hour=h;
minute=m;
second=s;
}
friend   Time   &   operator++(Time   &   a);
friend   Time   operator++(Time   &   a,int);
friend   ostream   &   operator < <(ostream   &   o,   const   Time&   t);
};
//------------------------------
Time   &   operator++(Time   &   a){
if(!(a.second=(a.second+1)%60)&&!(a.minute=(a.minute+1)%60)){
a.hour=(a.hour+1)%24;
}
return   a;
}
//-------------------------------
Time   operator++(Time   &   a,int){
Time   t(a);
if(!(a.second=(a.second+1)%60)&&!(a.minute=(a.minute+1)%60)){
a.hour=(a.hour+1)%24;
}
return   a;
}
//----------------------------------
ostream   &   operator < <(ostream   &   o,const   Time   &   t){
o < <setfill( '0 ') < <setw(2) < <t.hour < < ": " < <setw(2) < <t.minute < < ": ";
return   o < <setw(2) < <t.second < < "\n " < <setfill( '   ');
}
//----------------------------------
int   main(){
Time   t;
t.set(11,59,58);
cout < <t++;
cout < <++t;
}


///以上是代码////////////////////////////////////////////////
请问ostream   &   operator < <(ostream   &   o,const   Time   &   t){
o < <setfill( '0 ') < <setw(2) < <t.hour < < ": " < <setw(2) < <t.minute < < ": ";
return   o < <setw(2) < <t.second < < "\n " < <setfill( '   ');
}

中的o   是指什么,为什么o作为参数被传入而在代码中却只是在最开始的地方做o < <



------解决方案--------------------
< <是函数 返回的对象还是ostream 你可查看其详细定义 所以可以反复 < < understand?