| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 974 人关注过本帖
标题:还是一个小程序,请指教
只看楼主 加入收藏
飘到心海
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:79
专家分:145
注 册:2009-5-3
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:7 
还是一个小程序,请指教
#include <iostream.h>
class sample
{
  int n;
public:
    sample(){}
    sample(int m){n=m;}
    int &operator--(int)
    {
      n--;
      return n;
    }
    void disp(){cout<<"n="<<n<<endl;}
};

void main()
{
  sample s(10);
  (s--)++;
  s.disp();
}
怎么理解,关键是运算符重载那块!
搜索更多相关主题的帖子: 指教 
2010-01-16 09:16
mfkblue
Rank: 5Rank: 5
等 级:职业侠客
帖 子:472
专家分:343
注 册:2008-12-21
收藏
得分:2 
类的私有数据做了一次"--"的操作。
2010-01-16 16:46
mghxz252
Rank: 2
等 级:论坛游民
帖 子:40
专家分:60
注 册:2010-1-18
收藏
得分:2 
可不可以说详细点,谢谢了
2010-01-18 22:21
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:2 
s--是调用了int&operator--(int)的运算符重载,
对类的成员变量n进行了减1操作,
返回int&,这个是关键。接着对n的引用进行加1操作,所以结果应该还是10.

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2010-01-19 08:43
ykqiang
Rank: 1
等 级:新手上路
帖 子:15
专家分:2
注 册:2007-9-21
收藏
得分:2 
我也问个入门问题:想学BC++,觉得老版的DOS界面太落后,就装了BC++6.0,可是这段程序运行后,输出结果的DOS窗口不显示,哪位指点一下,是不是BC6.0的环境有问题?
#include<iostream.h>
#include<conio.h>
main()
{
cout<<"Hello Word"<<endl;
cin.get();
cin.get();
}

春风桃李花开夜,秋雨梧桐落叶时。
2010-01-19 09:38
hehaiqian
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2010-1-19
收藏
得分:2 
回复 3楼 mghxz252
s--是调用了你自己定义的运算符重载函数(int &operator--(int))对s的私有变量进行了--运算,

关键是后面的++,由于你重载函数返回的是n的引用(int &),所以可以对它再进行运算(这个时候,
可以把(s--)看做是一个整数变量来操作,对它的改变会影响到n的值,这个和私有变量的初衷有点违背了)。
2010-01-19 15:55
ykqiang
Rank: 1
等 级:新手上路
帖 子:15
专家分:2
注 册:2007-9-21
收藏
得分:0 
回复 6楼 hehaiqian
感谢你的回复,我因它事,好久没上编程中国了,很对不起。再谢!

春风桃李花开夜,秋雨梧桐落叶时。
2016-10-09 08:47
ykqiang
Rank: 1
等 级:新手上路
帖 子:15
专家分:2
注 册:2007-9-21
收藏
得分:0 
回复 6楼 hehaiqian
感谢你的回复,我因它事,好久没上编程中国了,很对不起。再谢!

春风桃李花开夜,秋雨梧桐落叶时。
2016-10-09 08:47
快速回复:还是一个小程序,请指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016249 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved