C++ 基础【10】

本文代码仓库地址: 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;
}

一点点笔记,以便以后翻阅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小印丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值