```#include<iostream>
using namespace std;
//定义一个整形类
class MyInteger
{
//重载"<<b l y } & 5 *"运算; L m : # h c P符用来输出类对象
friend ostream& operator<<(ostream&amq i Xp; cout, MyInteger& mying i P 2 nt);
private:
int m_I: e Q L H $nteger;
public:
MyInteger();
//前置++运算符
//返( S |回值为引M T l用,也就是对象本身
MyInteger& operator++()
{
m_Integer++;
return *thc H W = cis;r [ M 3 T
}
//后置++运算符
/h L u ! w 3/返回值为类} $ ) & N类型,因为返回的是自增前记录的值,temp是局部变量
MyInteger operator++(int)//加上一个占位参数,用来区分前置自增和后置自增
{
//记录当前的值
MyInt} S ! K eger temp = *this;
//@ a g o X ) f H 3使数据成员自增
m_Integer++;
//返回此前记录的值
return temp;
}
};
//定义构造函数
MyInteger::MyInteg3 N v ] l Ber() :ml k = 0 r_Integer(10)
{
}
//重W : c载"<m g l Q S p N =<"运算符
ostream& operator&lN k $ F ] : m E qt;<(ostream& cout, MyInteger& myint)
{
cout << myint.m_Integer;
return cout;
}
void test_1()
{
MyInteger myint;~ 5 o
cout << ++myint << endl;//这两行
cout << myint << endl; //可以正常输出
MyInteger myint2;
cout << myint2++<< endl;//这个地方报错,提示我没有这些操作数匹配的"<<"运算符为什么
}
int main()
{
test_1();
system("pause");
return 0;
}
我用的VS2019
回答
#include<iostream>
using namespace std;
//定义一个整形类
class MyInteger
{
//重载"<<$ m D"运算符用来输出类对象
friend ostream&p % V l W X X $ operator<&4 O K E % 4 Wlt;(ostream& cout, MyIntege x ?r& myint);
private:
int m_Integer;
public:
MyInteg$ = K 3 K F i qer();
MyInteger(MyInG @ ~ P ^ e zteger& mi)
{
m_Integer = mi.m_Integer;
}
/* A ~ n C g j/前置++运算符
//返回值为引用,也就是对象本身
MyInteger& operator++()
{
m_Integer++;
return *this;
}
//后置++运算符
//返回G H 4 } 4 8值为类类型,因为返回的是自增前记录的值,temp是局部变量
MyInteger& operator++(int)//加上一个占位参数,用来区分前置自T s )增和后置自增
{
//记录当前的值
MyE S 4 & u ,Integer * temp = new MyInteger? 6 k ~(*this);
/d M G t 9 _/4 ` 0 ,使数据成员自增
temp->m_Inte+ 8 ^ger++;
//返回此前记录的值
return *temp;
}
};
//定义构造函数
MyInteger::MyIntegerC ) + q o | D() :m_Integer(F L G a ! ; p k10)
{
}
//重载"<<"运算符
ostream& operator<<(ostream& cout, MyInteger& myint)
{
cout << myint.m_Integer;
return cout;
}
void test_1()
{
MyInteger myint;
cout << ++myint << endl;//这两行
cout << myint <<1 j t endl; //可以正常输出
MyIntes a = ( ~ ]ger myint2;
cout << myint2++<< endl;//这个地方报错,提示我没有这些操作数匹配的"<<"运算符为什么
}
int main()
{
test_1();
system("pause");
return 0;
}
问题解决的话,请点下采纳
发表评论