本文代码仓库地址: gitee码云CSDN笔记仓库地址
加号(+)运算符重载【Class14】
// 运算符重载 -- 加号(+)运算符重载
#include <iostream>
using namespace std;
// 通过成员函数重载 + 号运算符
class person01_xy {
public:
int mA = 0;
int mB = 0;
// 这是我们自己的想法,通过这个成员函数来实现加法运算
person01_xy mFun01(person01_xy& p) {
person01_xy temp;
temp.mA = this->mA + p.mA;
temp.mB = this->mB + p.mB;
return temp;
}
// 编辑器给自定义运算符取了统一函数名【operator+】
person01_xy operator+(person01_xy& p) {
person01_xy temp;
temp.mA = this->mA + p.mA;
temp.mB = this->mB + p.mB;
return temp;
}
};
// 通过全局函数重载 + 号运算符
class person02_xy {
public:
int mC = 0;
int mD = 0;
};
// 成员函数重载 + 号运算符
void fun01() {
person01_xy p1;
p1.mA = 10;
p1.mB = 10;
person01_xy p2;
p2.mA = 5;
p2.mB = 5;
// 这里用自定义的成员函数进行加法运算
person01_xy p3;
p3 = p3.mFun01(p1);
cout << "自定义的成员函数进行加法运算后的 p3 下的 mA = " << p3.mA << "\t mB = " << p3.mB << endl;
p3 = p3.mFun01(p2);
cout << "自定义的成员函数进行加法运算后的 p3 下的 mA = " << p3.mA << "\t mB = " << p3.mB << endl;
cout << endl;
// 这里用编辑器给定的统一函数名进行运算
person01_xy p4;
p4 = p4.operator+(p1);
cout << "编辑器统一名称的成员函数进行加法运算后的 p4 下的 mA = " << p4.mA << "\t mB = " << p4.mB << endl;
p4 = p4.operator+(p2);
cout << "编辑器统一名称的成员函数进行加法运算后的 p4 下的 mA = " << p4.mA << "\t mB = " << p4.mB << endl;
cout << endl;
// 使用系统统一的函数名还可以进行简写,简写如下
p4 = p4 + p1;
cout << "编辑器统一名称的成员函数简写加法运算后的 p4 下的 mA = " << p4.mA << "\t mB = " << p4.mB << endl;
p4 = p4 + p2;
cout << "编辑器统一名称的成员函数简写加法运算后的 p4 下的 mA = " << p4.mA << "\t mB = " << p4.mB << endl;
}
// 全局函我们自定义的加法运算
person02_xy p2AddP2(person02_xy& p1, person02_xy& p2) {
person02_xy temp;
temp.mC = p1.mC + p2.mC;
temp.mD = p1.mD + p2.mD;
return temp;
}
// 这里使用编辑器给我统一的函数名来写全局函数重载 + 号运算符
person02_xy operator+(person02_xy& p3, person02_xy& p4) {
person02_xy temp;
temp.mC = p3.mC + p4.mC;
temp.mD = p3.mD + p4.mD;
return temp;
}
// 全局函数重载 + 号运算符
void fun02() {
person02_xy p1;
p1.mC = 10;
p1.mD = 10;
person02_xy p2;
p2.mC = 5;
p2.mD = 5;
// 这里用自定义的全局函数进行加法运算
person02_xy p3;
p3 = p2AddP2(p1, p2);
cout << "自定义的全局函数进行加法运算后的 p3 下的 mC = " << p3.mC << "\t mD = " << p3.mD << endl;
cout << endl;
// 这里用编辑器给定的统一函数名进行运算
person02_xy p4;
p4 = operator+(p1, p2);
cout << "编辑器统一名称的全局函数进行加法运算后的 p4 下的 mC = " << p4.mC << "\t mD = " << p4.mD << endl;
p4 = operator+(p1, p3);
cout << "编辑器统一名称的全局函数进行加法运算后的 p4 下的 mC = " << p4.mC << "\t mD = " << p4.mD << endl;
p4 = operator+(p2, p3);
cout << "编辑器统一名称的全局函数进行加法运算后的 p4 下的 mC = " << p4.mC << "\t mD = " << p4.mD << endl;
cout << endl;
// 使用系统统一的函数名还可以进行简写,简写如下
p4 = p1 + p2;
cout << "编辑器统一名称的全局函数简写加法运算后的 p4 下的 mC = " << p4.mC << "\t mD = " << p4.mD << endl;
p4 = p1 + p3;
cout << "编辑器统一名称的全局函数简写加法运算后的 p4 下的 mC = " << p4.mC << "\t mD = " << p4.mD << endl;
p4 = p2 + p3;
cout << "编辑器统一名称的全局函数简写加法运算后的 p4 下的 mC = " << p4.mC << "\t mD = " << p4.mD << endl;
}
// 运算符重载,也可以发生函数重载
person02_xy operator+(person02_xy& p, int num) {
person02_xy temp;
temp.mC = p.mC + num;
temp.mD = p.mD + num;
return temp;
}
// 运算符重载,也可以发生函数重载
void fun03() {
person02_xy p1;
p1.mC = 10;
p1.mD = 10;
person02_xy p2;
p2 = p1 + 50;
cout << "运算符重载发生函数重载后简写加法运算后的 p2 下的 mC = " << p2.mC << "\t mD = " << p2.mD << endl;
p2 = p1 + 101;
cout << "运算符重载发生函数重载后简写加法运算后的 p2 下的 mC = " << p2.mC << "\t mD = " << p2.mD << endl;
p2 = p1 + 212;
cout << "运算符重载发生函数重载后简写加法运算后的 p2 下的 mC = " << p2.mC << "\t mD = " << p2.mD << endl;
}
int main() {
fun01();
cout << "------------------分界线------------------" << endl;
fun02();
cout << "------------------分界线------------------" << endl;
fun03();
cout << endl;
system("pause");
return 0;
}
左移(<<)运算符重载【Class15】
// 运算符重载 -- 左移(<<)运算符重载
#include <iostream>
using namespace std;
class person01_xy {
// 声明我的好基友
friend ostream& operator<<(ostream& out, person01_xy& p);
public:
int a = 0;
private:
int b = 0;
};
// ostream 是cout的类型【下面的out等于外面的cout】【链式编程思想】
ostream& operator<<(ostream& out, person01_xy& p) {
out << "打印的 a = " << p.a << "\t b = " << p.b;
return out;
}
void fun01() {
person01_xy p1;
p1.a = 1;
// 按照正常的理解是这样调用
cout << "按照正常理解调用";
operator<<(cout, p1);
cout << endl;
// 简写调用方式
cout << "简写的方式" << p1 << endl;
cout << "简写的方式" << p1 << endl << "简写的方式" << p1 << endl;
}
int main() {
fun01();
cout << "------------------分界线------------------" << endl;
cout << endl;
system("pause");
return 0;
}
一点点笔记,以便以后翻阅。