C++重载之重载一元运算符

在这里插入图片描述

++前置
#include<iostream>
#include<string>
using namespace std;
class CGirl{
public:
	string m_name;
	int m_ranking;

CGirl()
{
	m_name="西施";
	m_ranking=5;
}
void show()
{
	cout<<"姓名"<<m_name<<",排名:"<<m_ranking<<endl;
}
CGirl& operator++()
{
	m_ranking++;
	return *this;
}
};
int main()
{
	CGirl g1;
	int ii=0;
	++(++(++ii));
	++(++(++g1));//这样写的话要让重载函数返回对象的引用就可以了
	g1.show() ;
}

给重载函数增加一个int形参,它就成了++后置的重载函数。对++前置来说写成这样++(++(++g1))是有必要的需要嵌套,在表达式中前置的自增可以嵌套,但是后置的自增不能只能写成`g1++

++后置的重载要在函数中先创建一个临时对象,保存对象的当前状态,++之后返回临时对象,函数的返回值不能是引用,成员函数中的临时对象不能引用

#include<iostream>
#include<string>
using namespace std;
class CGirl{
public:
	string m_name;
	int m_ranking;

CGirl()
{
	m_name="西施";
	m_ranking=5;
}
void show()
{
	cout<<"姓名"<<m_name<<",排名:"<<m_ranking<<endl;
}
CGirl& operator++(int)
{
	CGirl tmp =*this;
	m_ranking++;
	return tmp;
}
};
int main()
{
	CGirl g1;
	CGirl g4=g1++;
    cout<<"g4.m_ranking=" <<g4.m_ranking<<endl<<"g2.m_ranking="<<g1.m_ranking;
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值