如果你有一个clear()函数清除数组中的所有元素,你是否使用void类型或referens到你正在使用的类型并返回* this。
实施例
void Vector<T>::clear() {
}
或
Vector& Vector<T>::clear(){
return *this
}
我真的不明白何时返回“this”以及何时使用void type。
答案 0 :(得分:9)
我假设返回*this
对链式API调用很有用。 obj.doSomething().doSomethingElseAfterwards()
。因此,链接有用的调用(例如add
)是*this
的良好候选者。链接不是很有用的方法可能会返回void
。
就我个人而言,我并不喜欢这种链式,但很多人都喜欢这种流畅的API。
答案 1 :(得分:4)
答案 2 :(得分:3)
在这种特殊情况下,没有特别好的理由返回我能想到的当前对象,除了启用可疑的代码,如
myVector.clear().add(somethingNew);