刷野打怪上王者·C++篇·第15期·重载操作

参考链接

RUNOOB.COM

重载操作

    重载操作分为重载运算重载函数

重载函数

    在同一个作用域内,可以声明几个功能类似的同名函数,但是这些形式参数(参数个数、数据类型或者顺序)不同。不能通过返回类型来重载函数。

#include <iostream>

using namespace std;

class dataDisposeClass
{
public:
	dataDisposeClass();
	~dataDisposeClass();

	float multiDispose(int iTmpVar1, double iTmpVar2);
	float multiDispose(double iTmpVar1, int iTmpVar2);
	int multiDispose(int iTmpVar1, int iTmpVar2);
	int multiDispose(int iTmpVar1, int iTmpVar2, int iTmpVar3);

private:

};
/*整型 * 整型*/
int dataDisposeClass::multiDispose(int iTmpVar1, int iTmpVar2)
{
	return iTmpVar1 * iTmpVar2;
}
/*小数 * 整型*/
float dataDisposeClass::multiDispose(double iTmpVar1, int iTmpVar2)
{
	return iTmpVar1 * iTmpVar2;
}
/*整型 * 小数*/
float dataDisposeClass::multiDispose(int iTmpVar1, double iTmpVar2)
{
	return iTmpVar1 * iTmpVar2;
}
/*整型 * 整型 * 整型*/
int dataDisposeClass::multiDispose(int iTmpVar1, int iTmpVar2, int iTmpVar3)
{
	return iTmpVar1 * iTmpVar2 * iTmpVar3;
}
dataDisposeClass::dataDisposeClass(){}

dataDisposeClass::~dataDisposeClass(){}

int main()
{
	dataDisposeClass *dispose = new dataDisposeClass();
	cout << "1 * 2 = " << dispose -> multiDispose(1, 2) << endl;
	cout << "3.1 * 2 = " << dispose->multiDispose(3.1, 2) << endl;
	cout << "3 * 2.1 = " << dispose->multiDispose(3, 2.1) << endl;
	cout << "3 * 4 * 5 = " << dispose->multiDispose(3, 4, 5) << endl;

	getchar();
}

运行结果

1 * 2 = 2
3.1 * 2 = 6.2
3 * 2.1 = 6.3
3 * 4 * 5 = 60

重载运算符

    在重载运算符中,需要使用关键字operator并在其后添加运算符符号。重载运算符与重载函数一样,需要一个返回类型和一个参数列表。
 

类名 operator+(const 类名&)

      重载运算符可以创建为类的方法和类的非成员方法。我们在前面讲解过this操作,如果是类的方法来实现两个类的加法,则按照上述声明并结合this即可完成两个类相加;但如果是类的非成员方法,则需要按照下面方法:

类名 operator+(const 类名&, const 类名&)

举例说明:


#include <iostream>

using namespace std;

class dataDisposeClass
{
public:
	dataDisposeClass(int iTmpVar1, int iTmpVar2);
	~dataDisposeClass();

	int getDataInfo();

	dataDisposeClass operator+(dataDisposeClass &tmpClass1)
	{
		dataDisposeClass tmpClass(NULL, NULL);  //初始化为0 
		tmpClass.length = this->length + tmpClass1.length;
		tmpClass.width = this->width + tmpClass1.width;
		return tmpClass;
	}
private:
	int length;
	int width;
};

dataDisposeClass::dataDisposeClass(int iTmpVar1, int iTmpVar2)
{
	length = iTmpVar1;
	width = iTmpVar2;
}

int dataDisposeClass::getDataInfo()
{
	cout << "Length = " << this->length << " width = " << this->width << endl;
	return 1;
}

dataDisposeClass::~dataDisposeClass(){}

int main()
{
	dataDisposeClass classVar1(10, 5);
	dataDisposeClass classVar2(20, 15);
	dataDisposeClass classVar3 = classVar1.operator+(classVar2);
	classVar3.getDataInfo();  //输出classVar3中的长和宽
	getchar();
}

运行结果

Length = 30 width = 20

可重载运算符

不可重载运算符

    成员访问运算符(.)、成员指针访问运算符(.*  ->*)、域运算符(::)、长度运算符(sizeof)、条件运算符(?:)、预处理符号(#)。

 

更多《计算机视觉与图形学》知识,可关注下方公众号:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值