自爆步兵 2021-05-24 18:44 采纳率: 0%
浏览 28

C++中关于引用的问题,附代码。

#include<iostream>
#include<string>
using namespace std;

//重载递增运算符

//自定义
class MyInteger
{
	friend ostream & operator<<(ostream &cout, MyInteger myint);
public:
	MyInteger()
	{
		m_Num = 0;
	}

	//重载前置++运算符
	//返回引用是为了一直对一个数据进行递增:MyInteger & operator++()
	//若是返回值:MyInteger operator++(),会调用拷贝构造函数,拷贝新变量进行累加操作
	MyInteger& operator++()
	{
		//先进行++运算
		m_Num++;

		//再将自身做一个返回
		return *this;
	}
	
	//重载后置++运算符
	//void operator++(int),int代表占位参数,可以用于区分前置和后置递增
	//这里必须写int 其他的不认
	//后置需要用值返回,因为temp是局部变量,引用之后释放
	//释放再返回就错了
	MyInteger operator++(int)
	{
		//先记录当时结果
		MyInteger temp = *this;
		//后递增
		m_Num++;
		//最后将记录的结果做返回
		return temp;
	}

private:
	int m_Num;
};

//重载左移运算符
ostream & operator<<(ostream &cout, MyInteger myint)//为什么这里的myint不能用引用
{
	cout << myint.m_Num;

	return cout;
}


void test01()
{
	MyInteger myint;

	cout << ++myint << endl;
}

void test02()
{
	MyInteger myint;
	cout << myint++ << endl;
	cout << myint << endl;
}

int main() {

	//test01();
	test02();

	system("pause");

	return 0;
}

老哥们,我想问一下,为什么

ostream & operator<<(ostream &cout, MyInteger myint)

{

    cout << myint.m_Num;

    return cout;

}

参数列表里的myint 为什么不能用引用啊,加了引用test02里的第一个cout后的左运算符就报错

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-05-27 11:32
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

    ​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

悬赏问题

  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了
  • ¥15 如何使用micpyhon解析Modbus RTU返回指定站号的湿度值,并确保正确?
  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,