注册 登录
编程论坛 C++教室

还是一个小程序,请指教

飘到心海 发布于 2010-01-16 09:16, 974 次点击
#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();
}
怎么理解,关键是运算符重载那块!
7 回复
#2
mfkblue2010-01-16 16:46
类的私有数据做了一次"--"的操作。
#3
mghxz2522010-01-18 22:21
可不可以说详细点,谢谢了
#4
flyingcloude2010-01-19 08:43
s--是调用了int&operator--(int)的运算符重载,
对类的成员变量n进行了减1操作,
返回int&,这个是关键。接着对n的引用进行加1操作,所以结果应该还是10.
#5
ykqiang2010-01-19 09:38
我也问个入门问题:想学BC++,觉得老版的DOS界面太落后,就装了BC++6.0,可是这段程序运行后,输出结果的DOS窗口不显示,哪位指点一下,是不是BC6.0的环境有问题?
#include<iostream.h>
#include<conio.h>
main()
{
cout<<"Hello Word"<<endl;
cin.get();
cin.get();
}
#6
hehaiqian2010-01-19 15:55
回复 3楼 mghxz252
s--是调用了你自己定义的运算符重载函数(int &operator--(int))对s的私有变量进行了--运算,

关键是后面的++,由于你重载函数返回的是n的引用(int &),所以可以对它再进行运算(这个时候,
可以把(s--)看做是一个整数变量来操作,对它的改变会影响到n的值,这个和私有变量的初衷有点违背了)。
#7
ykqiang2016-10-09 08:47
回复 6楼 hehaiqian
感谢你的回复,我因它事,好久没上编程中国了,很对不起。再谢!
#8
ykqiang2016-10-09 08:47
回复 6楼 hehaiqian
感谢你的回复,我因它事,好久没上编程中国了,很对不起。再谢!
1