很多重载操作符是一元的,比如说"+", 意味着带的参数只有一个.对于这样的例子, 一个点对象Point, 包含x,y两个成员变量.如果要实现一个Point对象直接加一个值就可以改变x,y两个成员变量的值, 怎么实现呢?
可以用友元来实现,见下面的例子:
class Point
{
public:
Point()
{
}
Point(int px,int py)
{
x = px;
y = py;
}
Point & operator +(Point &pt);
friend Point & operator + (Point &pt,int offset);
public:
int x,y;
};
Point & Point::operator +(Point &pt)
{
Point p;
p.x = x + pt.x;
p.y = y + pt.y;
return p;
}
Point & operator +(Point &pt,int offset)
{
Point p;
p.x = offset + pt.x;
p.y = offset + pt.y;
return p;
}
int main(int argc, char* argv[])
{
Point p, p1(1,1),p2(2,2);
int ffset = 3;
p = p1+p2;
p = p + offset;
return 0;
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12925485/viewspace-450393/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12925485/viewspace-450393/