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.-> [] = ()必须在类内重载

相关推荐
故事不长丨6 小时前
C#定时器与延时操作的使用
开发语言·c#·.net·线程·定时器·winform
hefaxiang6 小时前
C语言常见概念(下)
c语言·开发语言
“αβ”6 小时前
MySQL表的操作
linux·网络·数据库·c++·网络协议·mysql·https
欧阳天风6 小时前
js实现鼠标横向滚动
开发语言·前端·javascript
十五年专注C++开发7 小时前
Asio2: 一个基于 Boost.Asio 封装的高性能网络编程库
网络·c++·boost·asio·asio2
gcfer7 小时前
CS144 中的C++知识积累
c++·右值引用·智能指针·optional容器
yue0087 小时前
C# Directory的用法介绍
开发语言·c#
雨落秋垣7 小时前
手搓 Java 的用户行为跟踪系统
java·开发语言·linq
Bona Sun8 小时前
单片机手搓掌上游戏机(二十)—pico运行doom之编译环境
c语言·c++·单片机·游戏机
爱丽_8 小时前
深入理解 Java Socket 编程与线程池:从阻塞 I/O 到高并发处理
java·开发语言