运算符重载 重载的两种方法 + - ++ ——运算符重载

一、运算符重载入门技术推演

#include
using namespace std;

class Complex
{
public:
	int a;
	int b;
public:
	Complex(int a = 0,int b = 0)
	{
		this->a = a;
		this->b = b;
	}
	void printCom()
	{
		cout<
二、运算符重载的两种方法

#include
using namespace std;

class Complex
{
public:
	int a;
	int b;
public:
	Complex(int a = 0,int b = 0)
	{
		this->a = a;
		this->b = b;
	}
	void printCom()
	{
		cout<

三、运算符重载的升级--使用友元函数 + 前置后置运算符重载

自增自减运算符

(1)前缀形式

前置形式  返回  改变后的对象,在成员运算符函数中返回 *this ;在全局运算函数中    返回  修改后的参数

(2)后缀形式

后缀形式 返回 改变之前的值,需要创建一个对象代表这个值的独立对象并返回它,因此后缀运算是通过传值方式返回的。

TV

概括来讲:前置返回对象引用,后置先创建对象后返回旧值


#include
using namespace std;

class Complex
{
private://此处升级版
	int a;
	int b;
	//全局函数 重载+运算符
	friend Complex operator+(Complex &c1,Complex &c2);
	//重载前置 ++ 运算符 ----友元函数
	friend Complex& operator++(Complex &c1);
public:
	Complex(int a = 0,int b = 0)
	{
		this->a = a;
		this->b = b;
	}
	void printCom()
	{
		cout<a - c2.a,this->b - c2.b);
		return tmp;
	}
//2:成员函数方法 实现 -- 运算符重载
	Complex& operator--()
	{
		this->a--;
		this->b--;
		return *this;
	}
protected:
private:
};
//1:全局函数法 实现 + 运算符重载
Complex operator+(Complex &c1,Complex &c2)
{
	Complex tmp(c1.a + c2.a ,c1.b + c2.b);
	return tmp;
}
//前置++
Complex& operator++(Complex &c1)
{
	c1.a++;
	c1.b++;
	return c1;
}
//后置++ ====== 函数的返回值不是函数重载的标准
Complex operator++(Complex &c1,int)//新的语法占位符
{
	Complex tmp(0,0);
	return tmp;
}

int main()
{
/*
	定义运算符重载函数名的步骤
		全局函数、类成员函数方法实现运算符重载步骤
		1)要承认操作符重载是一个函数,写出函数名称operator+ () 
		2)根据操作数,写出函数参数 
		3)根据业务,完善函数返回值(看函数是返回引用 还是指针 元素),及实现函数业务
*/

	Complex c1(1,2),c2(3,4);
	
	//1:全局函数法 实现 + 运算符重载
	//Complex operator+(Complex &c1,Complex &c2) 
	Complex c3 = c1 + c2;
	c3.printCom();

	//2:成员函数方法 实现 - 运算符重载
	//c1.operator-(this,c2);
	//Complex operator+(Complex &c2);
	Complex c4 = c1 - c2;
	c4.printCom();


	//前置++操作符 用全局函数实现
	//Complex& operator++(Complex &c1);
	++c1;
	c1.printCom();

	//前置--操作符 用成员函数实现
	//Complex& operator--();
	--c1;
	c1.printCom();

	//后置++操作符 用全局函数实现
	//Complex operator++(Complex &c1);//返回元素--与前置++不一样
	c1++;
	c1.printCom();
	
	system("pause");
	return 0;
};





你可能感兴趣的:(运算符重载 重载的两种方法 + - ++ ——运算符重载)