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

相关推荐
RPGMZ4 分钟前
RPGMZ游戏引擎 如何手动控制文字显示速度
开发语言·javascript·游戏引擎·rpgmz
oioihoii5 分钟前
C++11 GC Interface:从入门到精通
java·jvm·c++
salsm18 分钟前
Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战
c++·静态分析·clang·代码质量
Porien20 分钟前
Vulkan-记录 官方教程的详细步骤(记录踩坑)
c++·计算机图形学
机器学习之心22 分钟前
三种经典算法无人机三维路径规划对比(SMA、HHO、GWO三种算法),Matlab代码实现
开发语言·sma·hho·gwo·无人机三维路径规划对比
weixin_4621764144 分钟前
(三十一)深度解析领域特定语言(DSL)第六章——语法分析:递归下降语法分析器(Recursive-Descent Parser)
java·开发语言·软件构建
小刘同学++1 小时前
C++11 alignas 和 alignof 关键字
开发语言·c++
未来之窗软件服务2 小时前
js调用微信支付 第二步 获取access_token ——仙盟创梦IDE
开发语言·javascript·微信·微信支付·仙盟创梦ide·东方仙盟
听风lighting2 小时前
WebServer实现:muduo库的主丛Reactor架构
linux·运维·网络·c++·socket·webserver
比特层递2 小时前
C++: 输出Windows平台或Linux平台时间信息的函数
开发语言·c++