1.为什么要使用运算符重载?
答:为了方便我们自定义类型的运算,类和结构体
2.两种基本重载
运算符重载可以通过成员函数或友元函数来实现。
2.基本语法
重载函数的返回值类型 operator 要重载的运算符(参数){};
友元函数的运算符重载示例代码
#include <iostream>
class mm
{
public:
int a;
int b;
mm(int a,int b):a(a),b(b){}
friend mm operator+(mm obj1, mm obj2);
};
mm operator+ (mm obj1, mm obj2)
{
return mm(obj1.a + obj2.a, obj1.b + obj2.b);
}
void main()
{
mm m1(1, 1);
mm m2(2, 2);
mm m3 = m1 + m2;//该部分代码可以用 mm m3=operator+(m1,m2); 代替
std::cout << m3.a;
}
运算符重载的本质是函数调用,一个是显示调用一个是隐式调用
类的成员函数的写法
#include <iostream>
class mm
{
public:
int a;
int b;
mm(int a,int b):a(a),b(b){}
friend mm operator+(mm obj1, mm obj2);
mm operator-(mm obj)
{
return mm(this->a - obj.a, this->b - obj.b);
}
};
mm operator+ (mm obj1, mm obj2)
{
return mm(obj1.a + obj2.a, obj1.b + obj2.b);
}
void main()
{
mm m1(1, 1);
mm m2(2, 2);
mm m3 = m1 + m2;
mm m4 = m2 - m1;
std::cout << m3.a<<"\n"<<m4.a;
}
为什么类的成员函数参数少一个,因为类本身也作为一个参数