3 回答
TA貢獻1818條經驗 獲得超8個贊
有很多人會反對我,但這就是我的看法:
類本質上是某種對象的定義。靜態方法應定義與該對象定義密切相關的操作。
如果你只是想要一組與底層對象或一種對象的定義無關的相關函數,那么我會說只使用命名空間。就我而言,從概念上講,這是更明智的。
例如,在您的情況下,問自己,“什么是MyMath?” 如果MyMath沒有定義一種對象,那么我會說:不要把它變成一個類。
但就像我說的那樣,我知道有很多人會(甚至激烈地)不同意我(特別是Java和C#開發人員)。
TA貢獻1780條經驗 獲得超1個贊
如果需要靜態數據,請使用靜態方法。
如果它們是模板函數,并且您希望能夠為所有函數指定一組模板參數,那么在模板類中使用靜態方法。
否則,使用命名空間函數。
回應評論:是的,靜態方法和靜態數據往往被過度使用。這就是為什么我只提供兩個相關場景,我認為它們可以提供幫助。在OP的具體示例(一組數學例程)中,如果他想要指定參數 - 比如核心數據類型和輸出精度 - 將應用于所有例程,他可能會執行以下操作:
template<typename T, int decimalPlaces>
class MyMath
{
// routines operate on datatype T, preserving at least decimalPlaces precision
};
// math routines for manufacturing calculations
typedef MyMath<double, 4> CAMMath;
// math routines for on-screen displays
typedef MyMath<float, 2> PreviewMath;
如果您不需要,那么一定要使用命名空間。
- 3 回答
- 0 關注
- 786 瀏覽
添加回答
舉報
