C++里面,当运算符重载为类的成员函数时,函数的参数比原来的操作数少一个,怎么理解?
展开全部
因为当前类的实例就当做原来两个操作数中的左操作数了.所以看起来像是省略了一个
追问
还是不太明白,您能举例说明吗?
追答
class CWeight
{
public:
CWeight(int iIn){m_iWeight = iIn;};
CWeight& operator+(const CWeight& other);
CWeight& operator=(const CWeight& other);
public:
int m_iWeight;
};
CWeight& CWeight::operator+(const CWeight& other)
{
return CWeight(this->m_iWeight + other.m_iWeight);
// 注意这里, 调用了实际的加法,但是本实例的数据作为了左操作数, 我特意加了this->,其实是可以省略的.
}
CWeight& CWeight::operator=(const CWeight& other)
{
m_iWeight = other.m_iWeight;
return *this;
}
void main()
{
CWeight w1(10);
CWeight w2(20);
CWeight w3 = w1 + w2;
printf("w1 = %d, w2 = %d, w3 = %d\n", w1.m_iWeight, w2.m_iWeight, w3.m_iWeight);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这就相当于两个函数了,不算重载了,可以认 为是相干的两个函数,当然在这函数还是可以调用基类的函数的。
更多追问追答
追问
我想问的是为什么操作数比原来少一个?
追答
就是两个不相干的,多,少,操作数类型变化都没有关系的,C++允许函数重名,只要参数不一样就是不同的函数。
他们没有关系的,就想是两个人重名一样,非要拉关系,那就是说他比我矮一点,等同于这个道理,你想问为什么他比我矮?这样问题我想没有意义吧。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询