2013-11-22 23 views
-1

我想要設計一個爲視頻處理而構建的項目,並且我打算使用openCV。 我想添加一個Utils類,它只包含靜態函數,其目的是合併各種函數,這些函數僅依賴於其參數並執行各種處理步驟,例如Utils::processFramHsvSpace(cv::Mat inputFrame),它處理cv::Mat並返回從HSV空間中提取的某些特徵。OOP - 使用靜態方法有什麼缺點嗎?

這種類型的方法在內存使用方面有什麼缺點嗎?相反,我應該向主類添加一個方法並使用類成員變量?

+0

爲什麼不在命名空間中創建它們? – Caesar

+0

爲什麼不是全局函數?內存使用方面沒有任何缺點。但是你正在使用類來實現它們不是爲了設計的。全局函數(無論是否在命名空間中)都更好。 – john

+1

如果你只有函數,沒有狀態,沒有類型應該處理的明確責任,那麼類不是最好的設計......它也是Java的。 ;)在命名的命名空間中使它們成爲自由函數。 – thokra

回答

4

流行測驗!

你能更好地閱讀:

Vector::length(v); 

v.length(); 

length(v); 

由於thokra所說的那樣,C++是不是Java。你可以選擇類的方法,靜態方法和自由格式函數。使用它們。如果你需要將它們分組,把它們放入一個命名空間。這樣做的好處是,您可以使用using子句,其中名稱空間關聯很明顯。

+1

如果這是一個彈出式測驗,您忘記了上述選項;) –

相關問題