"return *this" 赋值运算符重载
"return *this" assignment operator overloading
Fraction& Fraction::operator= (const Fraction &fraction)
{
// do the copy
m_numerator = fraction.m_numerator;
m_denominator = fraction.m_denominator;
return *this;
}
int main()
{
Fraction fiveThirds(5, 3);
Fraction f;
f = fiveThirds; // calls overloaded assignment
std::cout << f;
return 0;
}
重载赋值运算符时,我对 return this
的概念有一些疑问。
在main函数中f = fiveThirds
会调用赋值运算符,会return*this
,即return一个Fraction
对象!
问题是 f = fiveThirds
将 return 对象,但没有任何 Fraction 对象可以接收它!
在赋值链中x=y=z
,y=z
将return一个对象(k
)赋值给x
,但是x=k
也会return一个对象,那么谁接收这个对象呢?
我已尽力描述我的问题。
The problem is f = fiveThirds will return the object, but there isn't any Fraction object to receive it!
更准确地说,它return是对对象的引用。
so who receives this object?
return 值被丢弃。
没有问题。
Fraction& Fraction::operator= (const Fraction &fraction)
{
// do the copy
m_numerator = fraction.m_numerator;
m_denominator = fraction.m_denominator;
return *this;
}
int main()
{
Fraction fiveThirds(5, 3);
Fraction f;
f = fiveThirds; // calls overloaded assignment
std::cout << f;
return 0;
}
重载赋值运算符时,我对 return this
的概念有一些疑问。
在main函数中f = fiveThirds
会调用赋值运算符,会return*this
,即return一个Fraction
对象!
问题是 f = fiveThirds
将 return 对象,但没有任何 Fraction 对象可以接收它!
在赋值链中x=y=z
,y=z
将return一个对象(k
)赋值给x
,但是x=k
也会return一个对象,那么谁接收这个对象呢?
我已尽力描述我的问题。
The problem is f = fiveThirds will return the object, but there isn't any Fraction object to receive it!
更准确地说,它return是对对象的引用。
so who receives this object?
return 值被丢弃。
没有问题。