操作符重载
定义:操作自定义类型的数据(例如两个点)
注意:1⃣️只能重载已经存在的运算符
2⃣️操作数的数目必须和原始定义一致
3⃣️至少有一个操作数为自定义类型
4⃣️重载后优先级不变
operator:重载的符号是什么
// 重载 + (友元、成员函数均可)
friend Point operator+(Point &p1,Point &p2){
return Point(p1.x+p2.x,p1.y+p2.y);
}
// 重载 << (必须是友元函数)
friend ostream& operator<<(ostream &out,const Point &p1){
out<<p1.x<<","<<p1.y<<endl;
return out;
}
// 重载 [] (必须是成员函数)
#include <iostream>
using namespace std;
class Text{
int rep[10];
public:
int getrep(int index){
return rep[index];
}
int & operator[](int index){
return rep[index];
}
const int & operator[](int index)const{
return rep[index];
}
// 重载输出运算符,输出方便
friend ostream & operator<<(ostream &out,Text t1){
for (int i=0; i<10; i++) {
out<<t1.rep[i]<<endl;
}
return out;
}
};
int main(int argc, const char * argv[]) {
Text t1;
for (int i=0; i<10; i++) {
cin>>t1[i];
}
cout<<t1;
return 0;
}
重载++运算符
Complex operator++(){ // ++在后
Complex c1(*this);
x++;
return c1;
}
Complex operator++(int){ // ++在前
return Complex(x++,y);
}