我想要設計一個爲視頻處理而構建的項目,並且我打算使用openCV。 我想添加一個Utils類,它只包含靜態函數,其目的是合併各種函數,這些函數僅依賴於其參數並執行各種處理步驟,例如Utils::processFramHsvSpace(cv::Mat inputFrame)
,它處理cv::Mat
並返回從HSV空間中提取的某些特徵。OOP - 使用靜態方法有什麼缺點嗎?
這種類型的方法在內存使用方面有什麼缺點嗎?相反,我應該向主類添加一個方法並使用類成員變量?
我想要設計一個爲視頻處理而構建的項目,並且我打算使用openCV。 我想添加一個Utils類,它只包含靜態函數,其目的是合併各種函數,這些函數僅依賴於其參數並執行各種處理步驟,例如Utils::processFramHsvSpace(cv::Mat inputFrame)
,它處理cv::Mat
並返回從HSV空間中提取的某些特徵。OOP - 使用靜態方法有什麼缺點嗎?
這種類型的方法在內存使用方面有什麼缺點嗎?相反,我應該向主類添加一個方法並使用類成員變量?
流行測驗!
你能更好地閱讀:
Vector::length(v);
v.length();
length(v);
由於thokra所說的那樣,C++是不是Java。你可以選擇類的方法,靜態方法和自由格式函數。使用它們。如果你需要將它們分組,把它們放入一個命名空間。這樣做的好處是,您可以使用using
子句,其中名稱空間關聯很明顯。
如果這是一個彈出式測驗,您忘記了上述選項;) –
爲什麼不在命名空間中創建它們? – Caesar
爲什麼不是全局函數?內存使用方面沒有任何缺點。但是你正在使用類來實現它們不是爲了設計的。全局函數(無論是否在命名空間中)都更好。 – john
如果你只有函數,沒有狀態,沒有類型應該處理的明確責任,那麼類不是最好的設計......它也是Java的。 ;)在命名的命名空間中使它們成爲自由函數。 – thokra