【问题标题】:return *this c++返回 *this c++
【发布时间】:2011-11-19 20:59:47
【问题描述】:

如果你有一个清除数组中所有元素的 clear() 函数,你是使用 void 类型还是引用你正在使用的类型并返回 *this。

例如

void Vector<T>::clear() {   
}

Vector& Vector<T>::clear(){
    return *this
}

我不太明白何时返回“this”以及何时使用 void 类型。

【问题讨论】:

    标签: c++ void return-type


    【解决方案1】:

    这取决于你。

    作为参考,std::vector::clear 返回void

    【讨论】:

      【解决方案2】:

      在这种特殊情况下,没有特别好的理由返回我能想到的当前对象,除了启用可疑代码,例如

      myVector.clear().add(somethingNew);
      

      【讨论】:

      • 这到底有什么可疑之处?有很多地方可能想做这样的事情。工厂对象,例如;这样,您可以:Factory().Setting1(...).Setting2(...).Construct() 并获取需要制作的对象。都带着临时的。基于 C++ 的 DSEL 让这些东西生生不息。
      • 谢谢,我想我现在明白了。 :)
      • @Nicol:有些人喜欢这样;有些人绝对讨厌它。就我个人而言,我处于中间位置,但考虑到广泛的意见,我尽量不使用这种模式,除非它已经在给定的代码库中建立。
      【解决方案3】:

      我假设返回 *this 对于链接 API 调用很有用。 obj.doSomething().doSomethingElseAfterwards()。因此,链接有用的调用,例如add*this 的良好候选者。链接不是很有用的方法可能会返回void

      我个人不喜欢这种链接方式,但很多人喜欢它允许的流畅 API。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-07
        • 2016-07-23
        • 1970-01-01
        • 2017-06-23
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 2014-01-16
        相关资源
        最近更新 更多