时间:2021-05-20
复制代码 代码如下:
#include<iostream>
using namespace std;
class A
{
int x,y;
public:
A(int xx,int yy):x(xx),y(yy){}
A(){x=0;y=0;}
A operator+(const A&b) //不加const限定,也可以
{ return A(x+b.x,y+b.y); }
A operator-()
{ return A(-x,-y); }
void show()
{cout<<"x="<<x<<" y="<<y<<endl;}
};
void test_A()
{
A a1(2008,512),a2(2013,420),a3;
a3=a1+a2; //调用操作符重载函数: a1.oprator +(a2)
a3.show();
a1=-a1; //调用操作符重载函数: a1.operator -()
a1.show();
}
/***********************
执行结果
x=4021 y=93
x=-2008 y=-512
**********************/
class B
{
int x,y;
public:
B(int xx,int yy):x(xx),y(yy){}
B(){x=0;y=0;}
friend B operator+(const B&a,const B&b);
friend B operator-(const B&a);
void show()
{cout<<"x="<<x<<" y="<<y<<endl;};
};
B operator+(const B&a,const B&b)
{return B(a.x+b.x,a.y+b.y);}
B operator-(const B&a)
{return B(-a.x,-a.y);}
/***************************
class B
{
int x,y;
public:
B(int xx,int yy):x(xx),y(yy){}
B(){x=0;y=0;}
friend B operator+(const B&a,const B&b)
{return B(a.x+b.x,a.y+b.y);}
friend B operator-(const B&a)
{return B(-a.x,-a.y);}
void show()
{cout<<"x="<<x<<" y="<<y<<endl;};
}
********************************/
int main()
{
B B1(1991,1105),B2(2013,62),B3;
B3=B1+B2; //调用操作符重载函数: a1.oprator +(a2)
B3.show();
B1=-B1; //调用操作符重载函数: a1.operator +()
B1.show();
}
/****************************
运行结果:
x=4004 y=1167
x=-1991 y=-1105
Process returned 0 (0x0) execution time : 0.021 s
Press any key to continue.
*****************************/
复制代码 代码如下:
#include<iostream>
using namespace std;
class A
{
int x,y;
public:
A(int xx,int yy):x(xx),y(yy){}
A(){x=0;y=0;}
A operator+(const A&b) //不加const限定,也可以
{ return A(x+b.x,y+b.y); }
A operator-()
{ return A(-x,-y); }
void show()
{cout<<"x="<<x<<" y="<<y<<endl;}
};
void test_A()
{
A a1(2008,512),a2(2013,420),a3;
a3=a1+a2; //调用操作符重载函数: a1.oprator +(a2)
a3.show();
a1=-a1; //调用操作符重载函数: a1.operator -()
a1.show();
}
/***********************
执行结果
x=4021 y=93
x=-2008 y=-512
**********************/
class B
{
int x,y;
public:
B(int xx,int yy):x(xx),y(yy){}
B(){x=0;y=0;}
friend B operator+(const B&a,const B&b);
friend B operator-(const B&a);
void show()
{cout<<"x="<<x<<" y="<<y<<endl;};
};
B operator+(const B&a,const B&b)
{return B(a.x+b.x,a.y+b.y);}
B operator-(const B&a)
{return B(-a.x,-a.y);}
/***************************
class B
{
int x,y;
public:
B(int xx,int yy):x(xx),y(yy){}
B(){x=0;y=0;}
friend B operator+(const B&a,const B&b)
{return B(a.x+b.x,a.y+b.y);}
friend B operator-(const B&a)
{return B(-a.x,-a.y);}
void show()
{cout<<"x="<<x<<" y="<<y<<endl;};
}
********************************/
int main()
{
B B1(1991,1105),B2(2013,62),B3;
B3=B1+B2; //调用操作符重载函数: a1.oprator +(a2)
B3.show();
B1=-B1; //调用操作符重载函数: a1.operator +()
B1.show();
}
/****************************
运行结果:
x=4004 y=1167
x=-1991 y=-1105
Process returned 0 (0x0) execution time : 0.021 s
Press any key to continue.
*****************************/
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C++规定有四个运算符=,->,[],()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢?现在先说说赋值运算符“=”的重载C++规定赋值运算符“=
C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明
运算符重载实质上是函数的重载重载运算符的函数一般格式如下:函数类型operator运算符名称(形参表列){对运算符的重载处理}例如,想将“+”用于Complex
C++单目运算符重载单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和--i等。重载单目运算符的方法与重载双目运算符的方法是类似的。但由于
C++中友元函数与友元类详解总的来说,友元分为两类:友元函数与友元类。友元是针对类而言,它提供了一种非类的成员函数来访问类的非公有成员的一种机制。可以把一个函数