如果您有一個清除數組中所有元素的clear()函數,您是否使用void類型或參考值來處理正在使用的類型並返回* this。return * this C++
Ex。
void Vector<T>::clear() {
}
或
Vector& Vector<T>::clear(){
return *this
}
我真的不明白何時返回 「這個」 以及何時使用void類型。
如果您有一個清除數組中所有元素的clear()函數,您是否使用void類型或參考值來處理正在使用的類型並返回* this。return * this C++
Ex。
void Vector<T>::clear() {
}
或
Vector& Vector<T>::clear(){
return *this
}
我真的不明白何時返回 「這個」 以及何時使用void類型。
我想回到*this
是有用的鏈式API調用。 obj.doSomething().doSomethingElseAfterwards()
。所以在鏈接有用的情況下調用,如add
是*this
的好候選。鏈接不太有用的方法可能會返回void
。
就我個人而言,我並不喜歡這種鏈式風格,但許多人喜歡這種流暢的API。
這取決於你。
作爲參考,std::vector::clear
返回void
。
在這種特殊情況下,也沒有特別好的理由退換貨當前對象,我能想到的,除了使可疑代碼像
myVector.clear().add(somethingNew);
究竟是什麼是可疑的?有很多地方可能想要做類似的事情。工廠對象,例如;那麼你可以這樣做:'Factory()。Setting1(...).Setting2(...).Consttruct()'並獲取需要創建的對象。所有這些都是暫時的。基於C++的DESL的生活和呼吸這個東西。 –
謝謝,我想我現在明白了。 :) – shizzle
@尼科爾:有些人喜歡這樣的;有些人絕對討厭它。就個人而言,我處於中間的某個地方,但考慮到各種各樣的意見,我儘量不使用這種模式,除非它已經在給定的代碼庫中建立。 –