C++:重载操作符

还记得我们之前提到的函数重载吗,它可以使一个函数名有多种功能,操作符的重载也是这个道理,它会使同一个运算符具有多种功能。

我们在平常的使用中已经接触到了运算符重载,如"<<",它既是位移运算符,也可以配合cout进行输出。在C++中我们也可以自己重载。

cpp 复制代码
#include<iostream>
using namespace std;

class Num
{
private:
	int n;
public:
	Num(){}
	Num(int a)
	{
		n = a;
	}
public:
	int operator=(int a);
	int operator+(int a)
	{
		return n + a;
	}

	friend int operator+(int a, Num& num);
};

int Num:: operator=(int a)    //类内重载
{
	n = a;

	return a;
}

int operator+(int a, Num& num)//类外重载
{
	return a + num.n;
}

int main()
{
	Num num = 100;
	num = 20;

	int a = num + 10;
	int b = 10 + num;

	cout << a << " " << b << endl;
	return 0;
}

注意:

1.sizeof() :: . ?: 这四个不能重载

2.重载不会改变优先级和结合性

3.重载操作符不允许使用默认参数

4.-> [] = ()必须在类内重载

相关推荐
猫头虎5 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
YUJIANYUE5 小时前
PHP纹路验证码
开发语言·php
仟濹6 小时前
【Java基础】多态 | 打卡day2
java·开发语言
孞㐑¥6 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
Re.不晚6 小时前
JAVA进阶之路——无奖问答挑战2
java·开发语言
八零后琐话6 小时前
干货:程序员必备性能分析工具——Arthas火焰图
开发语言·python
3GPP仿真实验室6 小时前
【MATLAB源码】CORDIC-QR :基于Cordic硬件级矩阵QR分解
开发语言·matlab·矩阵
知南x6 小时前
【Ascend C系列课程(高级)】(1) 算子调试+调优
c语言·开发语言
忆~遂愿6 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Ro Jace7 小时前
计算机专业基础教材
java·开发语言