C++运算符+,+=,<<,=重载范列

本文详细介绍了C++中运算符重载的概念及其使用方法,包括单操作符与双操作符的区别,以及如何正确地定义友元函数来实现特定的操作。通过具体的代码示例,展示了复制构造函数、赋值操作符、自增操作符和加法操作符的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单操作符用返回引用,不能是友元函数,否则编译不通过

双操作符,必须定义为友元,否则编译不通过

测试编译器:g++ 4.6.3


#include <iostream>
#include <ostream>
#include <string>
using namespace std;
class T{
	public:
		T(){};
		T(int t)
		{
			a = t;
		};
		T(const T &t)//当没有定义复制函数,编译器会自己合成一个,并不会调用下面的赋值”=“操作符。
		{
			cout << "复制" << endl;
			a = t.a;
		};
		T& operator = (const T& t)//当没有定义赋值函数,编译器会自己合成一个,并不会调用下面的复制”()“操作符。
		{
			cout << "赋值" << endl;
			a = t.a;
			return *this;
		}
		T& operator += (int b)
		{
			a += b;
			return *this;
		}
	

	private://友元函数可以为私有类,因为友元不是类成员,所以私有限制对他不起作用
		friend	ostream& operator << (ostream& out,const T& t)//必须设为友元函数,否则编译不通过
		{
			out << "the num is:" << t.a;
			return out;
		}
	
		friend	T operator + (const T& t1, const T& t2)//必须设为友元函数,否则编译不通过
		{
			T t;
			t.a = t1.a + t2.a;
			return t;
		}
		int a;
};
void fun(T t)
{
	return ;
}
int main()
{
	T t(2);
	fun(t);//形参传递为复制函数
	T t1;
	t1 = t;//赋值操作符号
	t1 += 5;
	cout << t1 << endl;
	T t2;// 如果是t2 = t + t1;初始化为复制函数,等价与t2(t + t1)
	t2 = t + t1;//先加,在调用=
	cout << t2 << endl;
	return 0;
}



输出结果为:

复制
赋值
the num is:7
赋值
the num is:9


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值