我正在查看一些开源源代码,我注意到对于某些方法,而不是使用void作为返回类型,他们使用了对该类的引用。
示例:
class Object
{
private:
float m_x;
public:
Object();
Object& setX(float x)
{
m_x = x;
return *this;
}
};
通常情况下,我会编写相同的函数:
class Object
{
private:
float m_x;
public:
Object();
void setX(float x)
{
m_x = x;
}
};
使用一个优于另一个有什么好处吗?
答案 0 :(得分:8)
是的,返回引用有一些优点。返回引用时,您可以继续处理返回的引用并将多个函数调用链接在一起。例如,如果还有setY
函数,则可以执行此操作:
object.setX(5).setY(10);
返回引用并没有真正的缺点,但允许一些好的东西。它可以用来创建流畅的接口,如果你愿意,可以解决C ++中缺少命名参数的问题。
相关读物: