今天有道题需要重载"<<"运算,对对象进行一些计算。
一开始认为cout是一个类,"<<"在cout进行过定义,经过一番操作后。。显然失败。
后来得知<<是一种独立于cout的操作符,我对它进行了如下定义:
void operator<<(Rectangle &p)
{
cout<<(p.x2-p.x1)*(p.y2-p.y1);
}
然后又悲剧了……提示必须有2个参数....原来这是<<的规定,第一个参数是输入输出流。
cout是ostream流对象的一个引用
这样写是正确的
void operator<<(ostream& os,Rectangle &p)
{
os<<(p.x2-p.x1)*(p.y2-p.y1);
}