return * this c ++

时间:2011-09-18 23:10:47

标签: c++ void return-type

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

实施例

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

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

我真的不明白何时返回“this”以及何时使用void type。

3 个答案:

答案 0 :(得分:9)

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

就我个人而言,我并不喜欢这种链式,但很多人都喜欢这种流畅的API。

答案 1 :(得分:4)

取决于你。

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

答案 2 :(得分:3)

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

myVector.clear().add(somethingNew);