c++之递增运算符重载

c++之递增运算符重载,第1张

概述#include<iostream> using namespace std; class MyInteger { friend ostream& operator<<
#include<iostream>using namespace std;class MyInteger {    frIEnd ostream& operator<<(ostream& cout,MyInteger myInteger);public:    MyInteger() {        num = 0;    }    //重载++i运算符    返回引用是为了对同一个数据进行递增 *** 作    MyInteger & operator++() {        num++;        return *this重载i++运算符,int是占位符,后置递增要返回值    MyInteger operator++(int) {        先记录当时结果        MyInteger tmp = *后递增        num++再返回记录的结果        return tmp;    }private:     num;};ostream & operator<<(ostream &cout,MyInteger myInteger) {    cout << "num=" << myInteger.num;     cout;}voID test() {    MyInteger myInteger;    cout << ++(++myInteger)<<endl;    cout << myInteger << endl;} test2() {    MyInteger myInteger;    cout << myInteger++ << endl;    cout << myInteger << main() {    test2();    system(pause");    return ;}

说明:

1.如果

 MyInteger & ;    }

这里返回的是MyInteger而不是引用MyInteger &,在调用test()时,会输出:

 

也就是没有达到++i类似的效果:先计算,后赋值。这是因为,当执行一遍++MyInteger后,再执行++(++MyInteger) ,此时这里的(++MyInteger)已经不再是原来的MyInteger对象了,所以++(++MyInteger) 的结果是2,而MyInteger的结果是1,因此采用&, *** 作的就是同一个对象。这之后再调用test(),输出为:

 

要想实现另外一种自增,即i++,先赋值,后计算,就需要重载自增函数,只需要向重载函数中传入int占位符即可。同时,在函数里面,先要记录当前的值,再进行++,最后返回原先记录的值,这里返回的不能是引用,因为假设我们返回的是引用,相当于返回的是tmp的引用,而tmp是一个局部变量,在函数运行完后就会释放,此时再去访问该地址,就不合法了。最后调用test2(),输出为:

总结

以上是内存溢出为你收集整理的c++之递增运算符重载全部内容,希望文章能够帮你解决c++之递增运算符重载所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1159042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存