gpt4 book ai didi

c++ - 链接方法和临时变量,请说明

转载 作者:行者123 更新时间:2023-11-30 03:10:14 25 4
gpt4 key购买 nike

大家好!

我有一个类接收指向“圆”(例如)的指针,然后通过一些“链接”方法调整其属性。像这样:

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”是一个临时变量。这让我有些疑惑,所以,请澄清。谢谢!

最佳答案

不,在这种非常特殊的情况下这很好,因为临时文件将在整行执行后被销毁,但通常持有对临时文件的引用是非常糟糕的。

关于c++ - 链接方法和临时变量,请说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3443543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com