C++操作符重载的总结

1、加、减、乘、除操作符的重载

概要:重载函数放在类中,返回值类型为 Complex 类类型,参数类型为const Complex&

	Complex operator +(const Complex& obj);
	Complex operator -(const Complex& obj);
	Complex operator *(const Complex& obj);
	Complex operator /(const Complex& obj);
Complex Complex::operator +(const Complex& obj)
{
	Complex ret;
	ret.a = this->a + obj.a;
	ret.b = this->b + obj.b;
	return ret;
}

Complex Complex::operator -(const Complex& obj)
{
	Complex ret;
	ret.a = this->a - obj.a;
	ret.b = this->b - obj.b;
	return ret;
}

Complex Complex::operator *(const Complex& obj)
{
	double pa = a * obj.a - b * obj.b;
	double pb = a * obj.b + b * obj.a;
	Complex ret(pa, pb);
	return ret;
}

Complex Complex::operator /(const Complex& obj)
{
	double pc = obj.a * obj.a + obj.b * obj.b;
	double pa = (a * obj.a + b * obj.b) / pc;
	double pb = (b * obj.a - a * obj.b) / pc;
	Complex ret(pa, pb);
	return ret;
}

2、 ==、!= 操作符重载

概要:重载函数放在类中,返回值类型为 bool 类型,参数类型为const Complex&

	bool operator ==(const Complex& obj);
	bool operator !=(const Complex& obj);
bool Complex::operator ==(const Complex& obj)
{
	return (this->a = obj.a) && (this->b = obj.b);
}

bool Complex::operator !=(const Complex& obj)
{
	return (!(this == &obj));
}

3、= 操作符重载

概要:重载函数只能放在类中,返回值类型为 Complex& 类型,参数类型为const Complex&

	Complex& operator=(const Complex& obj);
Complex& Complex::operator=(const Complex& obj)
{
	if (this != &obj)
	{
		this->a = obj.a;
		this->b = obj.b;
	}
	return *this;
}

4、数组操作符重载

概要:重载函数只能通过类的成员函数重载,返回值类型为 int 类型,参数类型为int i,这个的返回值类型和参数类型都是不确定的。

int operator[](int i)
int IntArray::operator[](int i)
{
	return m_pointer[i];
}

5、函数操作符重载

概要:重载函数只能通过类的成员函数重载,返回值类型为 int 类型,参数类型为(),这个的返回值类型和参数类型都是不确定的,可以定义不同参数的重载函数。

int operator()();

6、逻辑操作符重载

概要:重载函数通过全局函数函数进行重载,返回值类型为 bool 类型,参数类型不确定

bool operator &&(const Test& l, const Test& r);
bool operator ||(const Test& l, const Test& r);
bool Test::operator &&(const Test& l, const Test& r)
{
	return (l.getI() && r.getI());

bool operator ||(const Test& l, const Test& r)
{
	return (l.getI() || r.getI());
}

7、逗号操作符重载

概要:重载函数通过全局函数函数进行重载,返回值类型为 类引用 类型,参数类型为const Test&

Test& operator,(const Test& a, const Test& b);
Test& Test::operator,(const Test& a, const Test& b)
{
	return const_cast< Test& >(b);
}

8、前置操作符和后置操作符

全局函数和成员函数均可进行重载(推荐成员函数重载);重载前置 ++ 操作符不需要额外的参数;重载后置 ++ 操作符需要一个 int 类型的占位参数

Test& operator++();
Test operator++(int);
Test& Test::operator++()		//前置++重载
{
	++i;
	return *this;
}
Test Test::operator++(int)		//后置++重载
{
	Test ret(i);
	i++;
	return ret;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值