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这个参数,,,,怎么用上呢? 展开
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这个参数,,,,怎么用上呢? 展开
展开全部
operator --(int s),调用 a--
operator --(void),调用 --a
就是这个区别。
operator --(void),调用 --a
就是这个区别。
更多追问追答
追问
那用CAdd定义一个对象 CAdd a(5);
让a.m_Operand自减2,即形参 int s=2 怎么调用呢?
a--(2)??????这样编译不通过,,,我想问的是这个
追答
没有这样的写法
--或者++只有前置和后置两种,带int参数那个是后置,不带的是前置,那个参数是没有用,只是需要区分一下前还是后,别纠结这个啦。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询