24小时热门版块排行榜    

查看: 274  |  回复: 1

1162113739

木虫 (正式写手)

[求助] 写出下面程序执行过程及输出 已有1人参与

写出下面程序执行过程及输出
#include<iostream>
using namespace std;
class Add{                                
        int n;
public:
        Add(int i){n=i;}
        operator++(){n+=5;}
        operator++(int){n+=2;}
        void show(){cout<<n<<'\t';}
        };
        void main(){
                Add A(5),B(5);
                ++A;B++;
                A.show();B.show();
                Add C(A),D(A);
                ++C;D++;
                C.show();D.show();
                cout<<endl;        }
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Chris_D

银虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★
1162113739: 金币+5, ★★★★★最佳答案 2015-05-06 10:23:38
参考链接  http://www.cnblogs.com/nniixl/articles/678321.html

运算符++和—有前置和后置两种形式,如果不区分前置和后置,则使用operator++( )或operator--( )即可;否则,要使用operator++( )或operator--( )来重载前置运算符,使用operator++(int)或operator--(int)来重载后置运算符,调用时,参数int被传递给值0。

另外程序有点小错误

#include <iostream>
using namespace std;

class Add{                                
            int n;
        public:
         Add(int i){n=i;}
         void operator++()
                 {n+=5;}
                 
         void operator++(int)
                 {n+=2;}
         
                 void show()
                 {cout<<n<<'\t';}
};
        
int main(){
     Add A(5),B(5);
     ++A;
         B++;
     A.show();B.show();
     Add C(A),D(A);
     ++C;D++;
     C.show();D.show();
     cout<<endl;      
         return 0;

}

结果是10 7 15 12
就是前置和后置两种重载的差异
2楼2015-05-06 09:40:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 1162113739 的主题更新
信息提示
请填处理意见