我想組合我的數學函數。我的數學函數包括許多數學函數,包括「math.h」中的函數和一些常數值。它們不在類或名稱空間中。由於性能原因,它們都被內聯。但是如果不是可能的命名空間,我希望他們在一個類中分組。我只是想用我這樣的功能:類中的靜態內聯函數
MyMath::Pow(2, 2);
MayMath::PI;
所以我的問題是;如果我可以使用類,函數和值必須是靜態的,但我認爲,但靜態方法不能內聯,因爲我知道。如果找不到解決方案,我可以使用「MyMath」作爲名稱空間。
我想組合我的數學函數。我的數學函數包括許多數學函數,包括「math.h」中的函數和一些常數值。它們不在類或名稱空間中。由於性能原因,它們都被內聯。但是如果不是可能的命名空間,我希望他們在一個類中分組。我只是想用我這樣的功能:類中的靜態內聯函數
MyMath::Pow(2, 2);
MayMath::PI;
所以我的問題是;如果我可以使用類,函數和值必須是靜態的,但我認爲,但靜態方法不能內聯,因爲我知道。如果找不到解決方案,我可以使用「MyMath」作爲名稱空間。
這聽起來像是XY Problem。
您試圖在類內部放置獨立函數(不屬於類) - 大概是因爲您是來自另一種不允許您編寫獨立函數的面嚮對象語言。
要編寫包含功能的數學庫,如pow
,exp
,log
等,請創建名稱空間MyMath
並定義函數。沒有必要上課。
「大概是因爲你是來自另一種不允許你編寫獨立函數的面嚮對象語言」是的,這是事實。 –
順便說一句我不認爲,但是有名稱空間複雜性的任何性能損失。在n1 :: foo()和n1 :: n2 :: n3 :: foo()之間? –
@CahitBurakKüçüksütcü只需輸入的量就能完成。 –
but static methods can not be inlined since I know
這不是真的,靜態方法也可以內聯。
靜態函數/方法也可以內聯。
在類中定義的方法默認是內聯的。
靜態函數可以與所有其他函數一樣內聯。但是,對於您的用例命名空間是更好的解決方案。
static inline
是完全有效的。
如果存儲類是extern,則標識符具有外部鍵和內聯定義還提供了外部定義。
如果存儲類是靜態的,所述標識符具有內部鍵和內聯的定義是在其他的翻譯單元不可見的。
事實上,這是難得的使用inline
與static
不同的存儲類。
爲什麼靜態方法在類定義內部定義時不能內聯? – Medinoc
我知道靜態修飾符不允許任何其他修飾符。我錯了嗎? –
你對使用名稱空間的理由是什麼? – Nabla