您的位置:首页 > 编程语言 > C语言/C++

C++中操作符重载

2014-01-05 02:01 351 查看
需要注意的地方:



写一个比较简单的例子:

#include<iostream>
#include<ostream>
using namespace std;

class A
{
public:
int a;
int b;
A(int _a = 0 , int _b = 0):a(_a),b(_b){}

A& operator = (const A &_a)
{
a = _a.a;
b = _a.b;

return  *this;
}

//++i
A& operator ++()
{
++a;
++b;
return  *this;
}

//i++
A operator ++(int)
{
A temp = *this;
a++;
b++;
return  temp;
}
//注意这里不是返回的引用,因为如果使用引用用来返回,将得到的相当于++i了,比如:
/*
A& operator ++(int)
{
A& temp = *this;
a++;
b++;
return  temp;
}
*/

friend A operator + (const A &_a , const A &_b);
friend A operator - (const A &_a , const A &_b);
friend A operator * (const A &_a , const A &_b);
friend A operator / (const A &_a , const A &_b);
friend istream& operator >> (istream &input,A& _a);
friend ostream& operator << (ostream &output,A& _a);

};

istream& operator >> (istream &input,A& _a)
{
input>>_a.a >>_a.b;
return input;
}

ostream& operator << (ostream &output,A& _a)
{
output<<"a = "<<_a.a <<", b = "<< _a.b << endl;
return output;
}

A operator + (const A &_a , const A &_b)
{
A result = A(0,0);

result.a = _a.a + _b.a;
result.b = _a.b + _b.b;

return  result;
}

A operator - (const A &_a , const A &_b)
{
A result = A(0,0);

result.a = _a.a - _b.a;
result.b = _a.b - _b.b;

return  result;
}

A operator * (const A &_a , const A &_b)
{
A result = A(0,0);

result.a = _a.a * _b.a;
result.b = _a.b * _b.b;

return  result;
}

A operator / (const A &_a , const A &_b)
{
A result = A(0,0);

result.a = _a.a / _b.a;
result.b = _a.b / _b.b;

return  result;
}

int main()
{
A _a = A(2,4);
A _b = A(1,2);

A _c ;
cin >> _c;
cout <<"_c : "<< _c <<"\n";

cout <<"++ _c : "<< ++_c <<"\n";

cout <<"_c ++ : "<< _c++ <<"\n";
cout <<"_c : "<< _c <<"\n";

cout <<"_a + _b : "<<_a + _b<<"\n";

cout <<"_a - _b : "<<_a - _b<<"\n";

cout <<"_a * _b : "<<_a * _b<<"\n";

cout <<"_a / _b : "<<_a / _b<<"\n";

return 0;
}




 可以重载的操作符:



 




不可以重载的操作符:



 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++