--运算符重载

#include <iostream>
#include <string>
//实现++/--运算符重载 
class Person 
{
	friend std::ostream& operator<<(std::ostream& os, Person p1);
public:
	Person& operator--()//前置运算符  链式编程,返回引用(本身),如果用值传递,连续调用会出错
	{
		--this->m_age;
		return *this;
	}
	Person operator--(int)//后置运算符 使用值传递
	{
		Person temp = *this;
		this->m_age--;
		return temp;   //返回一个局部对象 使用拷贝构造函数  意味着接下来也要使用值传递 
						//如果<<使用引用传递 找不到temp  temp已经被删除 只能输出一个信息
	}
	
private:
	int m_age = 0;
};

std::ostream& operator<<(std::ostream& os,Person  p1) //不能使用& p
{
	std::cout << p1.m_age;//自己定义输出  用友元实现 外部实现能够cout在左,p1在右.
	return os;  //返回的一定是一个ostream引用 
}




int main() {
	Person p1;
	std::cout << (p1--)<<std::endl;
	std::cout << p1<< std::endl;



	return 0;
}

输出结果:

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值