c++ - 方法的对象引用与 Void 返回类型

标签 c++

我在查看一些开源代码时注意到,对于某些方法,他们没有使用 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;
    }
};

使用一个比另一个有什么优势吗?

最佳答案

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

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

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

相关阅读:

关于c++ - 方法的对象引用与 Void 返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17644714/

相关文章:

c++ - 为什么使用 int 作为后增量运算符重载的参数?

c++ - const_cast VS 可变的?有什么不同吗?

c++ - 没有父结构重复的结构继承

c++ - 切换到新选项卡时更改 View - C++、MFC visual studio 2013

c++ - C++ 中的离散事件仿真算法 1.2.1

c++ - 返回 null shared_ptr 是否正确?

c++ - 使用 C++ 的分支模拟器

C++11:如何编写一个像 get<tuple>... 但接收参数包的模板函数?

c++ - 对模板方法的特定特化使用不同签名的正确方法

c++ - OpenGL - 正确地将 VAO 定义与 VBO 和其他缓冲区创建分开