C++ 重载运算符 语法问题,高手看看怎么调用这个函数

这几行代码就是重载了--运算符,就是让类的成员变量自减,后缀的话定义重载函数的时候括号里必须有个int变量,即如果实现自减的话就这样写CAdd&CAdd::--opera... 这几行代码就是重载了--运算符,就是让类的成员变量自减,后缀的话定义重载函数的时候括号里必须有个int变量,即如果实现自减的话就这样写
CAdd& CAdd::--operator(int s)
{
m_Operand--;

return *this;

}
调用的时候就
CAdd a(5);
a--;
但是我感觉那个 int s没有用上,于是改成了
CAdd& CAdd::--operator(int s)
{
m_Operand=m_Operand-s;
return *this;

}
就是用上那个int s,一次"自减"s,全部代码如下,但是问题是怎么调用呢?那个括号里的int s在main()函数里调用的时候怎么实现呢?我知道重载运算符有operator调用形式,即
a=a.operator--(2);
这行代码就是让对象a的m_Operand成员变量自减2,直接把自减当成对象a的成员函数调用
怎么像没改之前a--那样调用呢?不用operator调用形式,括号中的那个 int s怎么表示?

表达能力有限,希望大家能看懂= =
#include<stdio.h>
class CAdd
{
public:
CAdd()
{
m_Operand=0;
}
CAdd(int value)
{
m_Operand=value;
}
CAdd& CAdd::operator--(int s)
{
m_Operand=m_Operand-s;
return *this;
}

int GetValue()
{
return m_Operand;
}
private:
int m_Operand;
};
int main(int argc,char* argv[])
{
CAdd a(5);
a--;
printf("%d\n",a.GetValue());
return 0;
}
就在main()函数的第二行,a--显然没用到int s这个参数,,,,怎么用上呢?
展开
 我来答
heptnaol
2014-09-22 · TA获得超过7263个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1843万
展开全部
operator --(int s),调用 a--
operator --(void),调用 --a
就是这个区别。
更多追问追答
追问
那用CAdd定义一个对象 CAdd a(5);
让a.m_Operand自减2,即形参 int s=2 怎么调用呢?
a--(2)??????这样编译不通过,,,我想问的是这个
追答
没有这样的写法
--或者++只有前置和后置两种,带int参数那个是后置,不带的是前置,那个参数是没有用,只是需要区分一下前还是后,别纠结这个啦。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式