2012-02-02 113 views
0

以下哪項更快?重載操作符或使函數(C++)

方法1:

int foo (int A, int B) { 

    // write equations 
} 

方法2:

int operator| (int A, int B) { 

    // write equations 
} 
+0

爲什麼要比另一個更快? – 2012-02-02 16:29:12

回答

6

它們都是一個函數(因此在速度上沒有區別),只是一個(操作符)可以使用更多的「花哨」語法來調用。

當你決定使用哪兩種不應該是速度時,你的問題應該不是速度,而是如果你使用操作符的類型的含義是自然的。當你用它來做一些對讀者來說完全令人驚訝的事情時,考慮到他知道操作員通常所做的事情,那麼不要讓操作員過載。 (我在這裏假設你的意思是你自己的類型而不是int,並且萬一你不知道,你不能在整數上重載運算符,重載運算符的參數之一必須是用戶定義的類型)

+0

好猜!其實我使用用戶定義的類型,但爲了簡單起見,我寫了'int'。 – Shibli 2012-02-02 16:41:24

+0

@Shibli:一個很常見的方式來說明它是任何udt是使用'T',因爲這似乎是一個非常常見的模板參數,指示「任何東西」。 – PlasmaHH 2012-02-02 16:44:12

2

沒有區別,他們在每一個我所聽過的編譯器實現完全相同的方式在內部。可以肯定:簡介!

+0

是的@DavidSeiler說,簡介它,或者如果你有一臺Linux機器,編譯它並使用時間計算兩種情況下的執行時間(偏離大量迭代)。 – crsuarezf 2012-02-03 17:03:47

8

關於執行速度沒有區別。

選擇只是樣式和可讀性之一。你應該選擇一個最易理解的代碼來幫助未來的維護。