大家好!
我有一个类接收指向“圆”的指针(例如),然后通过一些“链接”方法调整其属性。像这样的东西:
class CCircleSetter
{
public:
explicit CCircleSetter( CCirclePtr circle ) : m_circle(circle)
{
}
CCircleSetter & Radius( int radius )
{
if (m_circle) m_circle->SetAttribute( "radius", radius );
return *this;
}
CCircleSetter & Center( CPoint center )
{
if (m_circle) m_circle->SetAttribute( "center", center );
return *this;
}
operator bool() const
{
return ( m_circle != NULL );
}
private:
CCirclePtr m_circle;
};
现在我想知道这段代码是否合法:
if ( CCircleSetter(myCircle).Radius(10).Center(myPoint) )
{ ... }
一方面,我认为在“if”表达式中创建的临时对象将一直存在到该表达式的末尾。因此,对“Radius”和“Center”的调用是合法的。但另一方面,使用对临时变量的引用是一种未定义的行为,在我看来,我正在做这种事情——使用 (*this),其中“this”是临时变量。这让我有些疑惑,所以,请澄清一下。谢谢!