1 前言
"+"操作,一般只用于int,浮点之类数的相加。
那能不能用作类的相加呢!可以,要重载加法;
2 如何重载加法
Point operator+(Point &a, Point &b)
{
Point n;
n.x = a.x+b.x;
n.y = a.y+b.y;
return n;
}
* 这里重载operatoer+,即+;因为c++可以根据参数决定调用的方法,所以这里可以重新定义+;
该方法要加入为类的友元函数
int main(int argc, char **argv)
{
cout<<"*******************"<<endl;
Point p1(1, 2);
Point p2(2, 3);
cout<<"*******************"<<endl;
Point sum;
sum = p1+p2;
sum.printInfo();
return 0;
}
*意外发现
写法1
Point sum;
sum = p1+p2;
打印内容
*******************
Point(x,y)
Point(x,y)
*******************
Point()
Point()
~Point()
(3, 5)
~Point()
~Point()
~Point()
写法2
Point sum = p1+p2;
*******************
Point(x,y)
Point(x,y)
*******************
Point()
(3, 5)
~Point()
~Point()
~Point()
明显方法2少创建一次类,更在快捷一些。
3 如何重载“p++”
/*这里是point++*/
Point operator++(Point &a,int b)
{
cout<<"p++"<<endl;
Point n;
n.x = a.x;
n.y = a.y;
a.x++;
a.y++;
return n;
}
4 如何重载“++p”
/*这里是++point*/
Point& operator++(Point &a)
{
cout<<"++p"<<endl;
a.x++;
a.y++;
return a;
}
5 如何重载“<<”
/*这里是<<*/
ostream& operator<<(ostream& cout, Point &a)
{
cout<<"("<<a.x<<", "<<a.y<<")";
return cout;
}
int main(int argc, char **argv)
{
cout<<"*******************"<<endl;
Point p1(1, 2);
cout<<"*******************"<<endl;
cout <<"Port = "<<p1<<endl;
return 0;
}
*稍微解释一下
一般用法,cout <<a<<"a"<<endl;
<<参数1:cout是已经定义过的变量。方法用的是引用;参数2为一般变量,这里有a,"a",endl。
cout <<a<<"a"<<endl;等价于
cout = cout<<a;
cout = cout<<"a";
cout = cout<<endl;
6 一般使用
//p++,这样可以
Point por=perator++(p1,0);
其他的就不举例了
网友评论