2014-12-27 254 views
2

我注意到,當我在Visual Studio中的一個新的C++類,它寫下來Foo(void)~Foo(void)作爲構造和析構函數模板代替Foo()~Foo()。但是,這兩個版本似乎都有效。兩者之間有差異還是根本不在乎我使用哪個版本?C++:構造器之間的差異()和構造函數(無效)

+0

已經有人迴應=) http://stackoverflow.com/questions/51032/is-there-a-difference-between-foovoid-and-foo-in-c-or-c – Bloo2 2014-12-27 20:28:17

+0

這沒不會顯示在我的搜索結果中,因爲它與一般的功能有關。直到現在我纔看到它帶有構造函數和析構函數。 – Rapti 2014-12-27 20:32:47

+0

別擔心,這不是一個指責,你應該更好地搜索。 :)你的問題很好。 – hvd 2014-12-27 20:35:08

回答

5

在C++中,這兩種在技術上相同的,如在

有關詳細信息「它沒有參數的函數」:即需要

在C中,然而,富(空隙)是「的功能沒有參數「,但是Foo()是」一個接受未知數量參數的函數「。這些論點是一個不明確的類型。

Foo(void)在兩種語言之間用相同的含義。

1

兩者都是等價的,所以這只是風格的一種選擇。我更喜歡Foo(),因爲它涉及較少的打字,這是我經常看到的。

這個問題其實是covered before on SO

顯然foo()在C表示「取的未指定的類型的參數未指定數量的函數foo」,其中在C++中它的意思是「函數foo沒有參數」。

+1

我也用過,因爲你可以更容易地看到構造函數是否帶參數。我只是好奇而已。 – Rapti 2014-12-27 20:27:46

0

只有當構造函數和析構函數不需要任何參數時,纔會有相同的結果。 Foo(void)似乎不太經常使用。