9

我正在查看一些开源代码,我注意到对于某些方法,而不是使用 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;
    }
};

使用其中一个有什么优势吗?

4

1 回答 1

8

是的,返回参考有一些好处。返回引用时,您可以继续处理返回的引用并将多个函数调用链接在一起。例如,如果也有一个setY函数,你可以这样做:

object.setX(5).setY(10);

返回引用并没有真正的缺点,但可以带来一些好处。它可用于创建流畅的接口,如果需要,可以解决 C++ 中缺少命名参数的问题,以及其他事情。

相关阅读:

于 2013-07-14T23:13:14.230 回答