C++ 重载重载操作符 学习笔记

本文详细讲解了如何在C++中对+和=等操作符进行重载,以实现更灵活的对象赋值和算术运算,并介绍了不可重载的特殊字符如sizeof()和::。通过实例演示了类内和友元函数的使用,同时提醒读者重载操作符的注意事项。
摘要由CSDN通过智能技术生成

在C++中 我们还可以对一些操作符进行重载  来使其的作用更多样化

例如  我们可以对 + <  >  等等字符进行重载    像c++中的string 类型中就该包含了很多字符重载

我们可以对这个字符串进行  +  =   +=等等运算

但是 不会所有的字符都可以被重载

例如:sizeof()    ?: .   :: 不能被重载

一些例子如下

1.我们想给对象的int型变量赋值  想用 nu = 200;的方式  nu是一个Num类  不是int 型的

所以 我么对=进行重载

=是双目运算符  对他进行重载时 系统默认左边的是类对象  右边的是n

所以只有一个参数n

#在类内对操作符进行重载时  只能有一个参数

public:
	int operator =(int n)
	{
		nValue = n;
		return n;
	}

下面对+来进行重载

首先 +运算符有两个情况

1.对象在+左边

在类内对操作符重载系统会默认左边参数为类对象

所以在类内定义

public:
    int operator +(int n)
    {
        
        return nValue+n;
    }

2.对象在+右边

int operator  +( int n, Num& nu)
{
    return nu.nValue + n;
}

因为类外函数不识别类内私有成员  所以我们队函数进行友元标记

类中成员是私有的话   用友元关键字对+的重载操作函数进行标记

public:
	friend int operator +(int n, Num& nu);
	//类中成员是私有的话   用友元关键字对+的重载操作函数进行标记

最后 一些注意事项:

//sizeof()  ?: . :: 不能被重载
//重载不能改变优先级
//重载操作符不能有默认参数
//->  []  =  () 必须在类内重载

完整代码如下

#include<iostream>
using namespace std;
class Num
{
private:
	int nValue;
public:
	Num(int n)
	{
		nValue = n;
	}
public:
	int operator =(int n)
	{
		nValue = n;
		return n;
	}
public:
	int operator +(int n)
	{
		
		return nValue+n;
	}
public:
	friend int operator +(int n, Num& nu);
	//类中成员是私有的话   用友元关键字对+的重载操作函数进行标记

};

int operator  +( int n, Num& nu)
{
	return nu.nValue + n;
}
int main()
{
	Num nu(100);
	//cout << nu.nValue << endl;
	//nu = 200;
	//cout << nu.nValue << endl;
	//nu=nu + 100;
	//cout << nu.nValue << endl;


	cout << nu + 100 << endl;

	return 0;
}


//sizeof()  ?: . :: 不能被重载
//重载不能改变优先级
//重载操作符不能有默认参数
//->  []  =  () 必须在类内重载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值