函数的重载:
参数个数、类型或顺序不同函数都可以当做不同的函数来进行声明与使用 (函数的类型不能作为判断依据);
举个例子:Print(int X)和Print(int X, int Y) 表示的是两个函数,这种使用方法就叫做函数的重载;
运算符的重载 (本文主要探讨) :
1> 一元运算符:!、++/--、-(负号) (文章最后介绍单目运算符的重载)
2> 二元运算符:+、-、*、/
3> 输入输出运算符:<< 、>>
4> 下标运算符:[ ]
本文将主要讲到:+(加法运算符)、<</>>(输入输出运算符)、[ ](下标运算符) 以及单目运算符++ 的重载。
一:乘法运算符的重载("+"*10)
#include<iostream>
using namespace std;
class Str{
private:
string temp;
string data;
public:
Str(){
temp = "";
}
Str(string x){
temp = x;
data = "";
}
string operator*(int count){
for(int i=0;i<count;i++){
data+=temp;
}
return data;
}
};
int main(){
string a = Str("+")*30;
cout << a << endl;
return 0;
}
二:加法运算符的重载
实现两个复数的相加:
#include <bits/stdc++.h>
using namespace std;
class Complex_num
{
public:
Complex_num()
{
a = 0;
b = 0;
}
Complex_num(int aa, int bb)
{
a = aa;
b = bb;
}
Complex_num(Complex_num &C)
{
a = C.a;
b = C.b;
}
void Print()
{
cout << a << "i+" << b << "j" << endl;
}
Complex_num operator + (Complex_num &C)
{
Complex_num c_temp;
c_temp.a = this->a + C.a;
c_temp.b = this->b + C.b;
return c_temp;
}
private:
int a,b;
};
int main()
{
Complex_num C1(12,14);
Complex_num C2(C1);
Complex_num C3;
C1.Print();
C2.Print();
C3 = C2 + C1;
C3.Print();
return 0;
}
注意事项:
注意+运算符重载的语法
二:输入/输出运算符的重载
还是拿上面那个例子继续举例:
#include <bits/stdc+