
下面是完整代码:
#includeusing namespace std; class MyInteger { friend ostream& operator<<(ostream& cout, MyInteger p); public: MyInteger() { m_A = 10; } //前置自增运算符重载 MyInteger& operator++()//返回引用是为了一直对一个数据进行操作 { //先进行自增操作 ++m_A; //后返回本身 return *this; } //后置自增运算符重载 MyInteger operator++(int)//int表示占位参数,可以用于区分前置和后置自增运算符(不能用double或者其他数据类型) //不可以返回引用,因为返回的temp是局部变量,会被释放,返回局部变量后面的操作会是非法操作 { //先记录当时结果 MyInteger temp = *this;//不要写成MyInteger temp = m_A;m_A与temp数据类型不同 ++m_A; //最后将初始的结果进行返回 return temp; } private: int m_A; }; ostream& operator<<(ostream& cout, MyInteger myint) { cout << myint.m_A;//不用换行 return cout; } void test() { MyInteger p; cout<< p << endl; } void test01() { MyInteger myint; cout << ++myint << endl; cout << myint << endl; } void test02() { MyInteger myint; cout << myint++ << endl; cout << myint << endl; } int main() { test(); test01(); }
下面是出现问题的局部代码:
ostream& operator<<(ostream& cout, MyInteger myint)
{
cout << myint.m_A;//不用换行
return cout;
}
ostream& operator<<(ostream& cout, MyInteger& myint)
{
cout << myint.m_A;//不用换行
return cout;
}
void test02()
{
MyInteger myint;
cout << myint++ << endl;
cout << myint << endl;
}
第三张图为调用自增函数的代码
第一张图设置的参数没有带引用,后置自增可以成功运行
而第二张图设置的参数带了引用,出现以下报错
暂时还不清楚是什么原因,如果有知道是什么原因的小伙伴,请分享一下下好吗~~
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)