关于C++重载运算符

首先要知道,运算符重载只是一种语法上的方便,实质上还是一种函数的调用方式。认清这一点,运算符重载就是纸老虎了。既然是函数调用,那么它遵循函数的一般语法,不过他的函数名是operator@,@代表要重载的运算符,而参数个数取决于该运算符是一元运算符还是二元运算符。

实际使用过程中,运算符重载函数最常见的声明方式是成员函数和友元函数。

首先我们声明一个拥有两个int类型成员变量的类Complex2:

头文件:

class Complex2
{
public:
	Complex2(void);
	Complex2(int a,int b);
	~Complex2(void);
public :
	int b;
	int a;
};

源文件:

#include "Complex2.h"

Complex2::Complex2(void)
{
}

Complex2::Complex2(int a,int b):a(a),b(b)
{
}

Complex2::~Complex2(void)
{
}

然后分别使用成员函数和友元函数来实现+、-运算符的重载

1.成员函数:

//声明
Complex2 operator+(const Complex2 &com);
//实现
Complex2 Complex2::operator+(const Complex2& com)
{
	Complex2 com2;
	com2.a = this->a+com.a;
	com2.b = this->b+com.b;
	return com2;
}

main函数:

int _tmain(int argc, _TCHAR* argv[])
{
	Complex2 com1(3,4);
	Complex2 com2(3,3);
	Complex2 com3 = com2+com1;
	cout<<com3.a<<endl;
	cout<<com3.b<<endl;

	cin.get();
	return 0;
}

结果输出:6   7

2.友元函数

友元函数与成员函数声明的不同在于参数个数和参数顺序

//声明
friend Complex2 operator-(Complex2 com1,Complex2 com2);
//实现
Complex2 operator-(Complex2 com1,Complex2 com2)
{
	Complex2 com3;
	com3.a = com1.a-com2.a;
	com3.b = com1.b-com2.b;
	return com3;
}

main函数

int _tmain(int argc, _TCHAR* argv[])
{
	Complex2 com1(7,9);
	Complex2 com2(3,3);
	Complex2 com4 = com1-com2;
	cout<<com4.a<<endl;
	cout<<com4.b<<endl;
	
	cin.get();
	return 0;
}

输出: 4,6

注意:友元函数中不可以使用this,因此函数声明有两个参数,而且第一个参数必须是运算符前的变量,第二个参数是运算符后的变量(针对于二元运算符)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值