C++常用运算符的重载及其代码实例


提示:以下是本篇文章正文内容,下面案例可供参考

一、主要运算符的重载

运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型,其关键字为 operator。下列代码假设我们定义了person类型数据。

1.赋值运算符 = 的重载

person& operator=(person& per) 
		{
			num = per.num;
			name = per.name;
			return *this;
		}

2.加号运算符号 + 的重载

friend person& operator +(person& per1 , person& per2) 
		{
			per1.num+=per2.num;
			per1.name+=per2.name;
			return per1;
		}

3.输入输出运算符 << , >>的重载

输出运算符 << 的重载:

friend ostream& operator<<(ostream& out , person& per) 
		{
			out<<per.num<<","<<per.name<<endl;
			return out; 
		}

输入运算符 >> 的重载:

friend istream& operator>>(istream& in , person& per)
		{
			in>>per.num>>per.name;
			return in;
		}

4.判断运算符 == , != 的重载

判断运算符 == 的重载:

friend bool operator ==(person& per1 , person& per2)
		{
			return (per1.num == per2.num && per1.name ==per2.name );
		}

判断运算符 != 的重载:

friend bool operator !=(person& per1 , person& per2)
		{
			return !(per1.num == per2.num && per1.name ==per2.name );
		}  

二、运算符重载完整代码实例

代码如下:

#include <iostream>
#include <string>

using namespace std;

class person 
{
	public:
		person(int a , string b):num(a),name(b) {  }
		void display() {cout<<num<<" "<<name<<endl;}
		//1.赋值运算符 = 的重载
		person& operator=(person& per) 
		{
			num = per.num;
			name = per.name;
			return *this;
		}
		//2.加号运算符号 + 的重载
		friend person& operator +(person& per1 , person& per2) 
		{
			per1.num+=per2.num;
			per1.name+=per2.name;
			return per1;
		}
		//3.输入输出运算符 << , >>的重载
		friend ostream& operator<<(ostream& out , person& per) 
		{
			out<<per.num<<","<<per.name<<endl;
			return out; 
		}
		friend istream& operator>>(istream& in , person& per)
		{
			in>>per.num>>per.name;
			return in;
		}
		//4.判断运算符 == , != 的重载
		friend bool operator ==(person& per1 , person& per2)
		{
			return (per1.num == per2.num && per1.name ==per2.name );
		}
		friend bool operator !=(person& per1 , person& per2)
		{
			return !(per1.num == per2.num && per1.name ==per2.name );
		}  
	private:
		int num;
		string name;

};
int main() {
	// 运算符 = 
	cout<<"----运算符 = 重载实例----"<<endl; 
	person p1(99,"小高");
	person p2 = p1; 
	cout<<p2; 
	// 运算符 + 
	cout<<"----运算符 + 重载实例----"<<endl; 
	person p3 = p1+p2;
	p3.display();
	// 运算符 << , >> 
	cout<<"----运算符 << , >> 重载实例----"<<endl; 
	cout<<"请输入:"<<endl;
	cin>>p3;
	cout<<p3;
	// 运算符 == , != 
	cout<<"----运算符 == ,!= 重载实例----"<<endl;
	cout<<(p1 == p2)<<endl;
	cout<<(p1 != p2)<<endl; 
	return 0;
}

总结

以上就是常用运算符的重载啦,应注意不同运算符重载时的不同定义奥。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Gavana.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值