2013-02-20 106 views
0

請幫助 - 什麼是全局函數以及它用於何時?語法(最簡單的一個):類/全局函數聲明C++

int Sum (Class_name h) {...} 
+11

你在教室裏被問到這個問題嗎? – Kitet 2013-02-20 17:39:03

+0

這是您可以在程序的全局範圍內訪問的類/函數。 – andre 2013-02-20 17:41:15

+1

@Kitet如果我是提問者,我現在已經放棄了... – filmor 2013-02-20 17:41:53

回答

4

在C++「全局函數」應當以cpp文件來限定,並且在.h文件中聲明。

例如

Sum.h:

int Sum(int a, int b); // declaration (prototype) 

Sum.cpp:

int Sum(int a, int b) // definition 
{ 
    return a + b; 
} 

現在,如果你想使用其他.cpp文件Sum函數只需添加#include "Sum.h"和使用該功能。

AnotherModule.cpp:

#include "Sum.h" 

void MyOtherFunction() 
{ 
    int var = Sum(3,4); 
} 
+0

謝謝你的回答!對不起,但我會試着更清楚我的問題。提到的語法是全局函數的聲明,但我不知道它應該在哪裏以及何時使用 - 我的意思是這個特定的語法。提前致謝!! – user2089947 2013-02-20 17:48:44

3

一個全局函數(在C++)是一個函數,它是在代碼任何地方訪問。這是C編程語言的傳統。對於以java這樣的語言開始的人來說,它可能看起來很奇怪,因爲它不在類中,但它有點像公共靜態方法,因爲你不需要任何對象來調用它。

所以,你可以在任何地方使用這個函數......(只是爲了確保它已經在之前聲明過(參見注釋),就像在頭文件中一樣)。最好將它們放在名稱空間中以避免與其他庫的名稱衝突並組織代碼但C++允許在全局範圍內聲明它。

你可以在與任何對象沒有關係的情況下使用它,或者它只是在聲明它的文件中使用的函數......例如,如果你希望初始化爲主或者操作你不想投入課堂等等 沒有嚴格的規則......這是最讓你感覺的;)

注意: 「聲明」=你告訴編譯器一個函數int Sum (Class_name h)存在,所以他不會侮辱你「你的功能還沒有被宣佈」

「定義」=你代碼你的功能。它需要告訴編譯這個功能做例子: int sum(Class h){ return h.a + h.b; }

您需要定義你的函數(不是「#定義」在這裏;))一次在.C/cpp和。在使用的聲明。 h使用它(除非你正在編輯.cpp所在的功能被定義,在這種情況下這個功能需要在上面)

+0

您是否意味着程序中任何位置的函數的作用域,這就是爲什麼「很像靜態方法」? – Subhajit 2013-02-20 17:51:26

+0

我說「很少像靜態方法」,因爲你不需要任何卑鄙的手段來稱呼它。我將添加「像PUBLIC靜態方法」,因爲它實際上更多,因爲這些函數可以在任何地方調用,就像我所說的那樣。當程序員不想將它與類或名稱空間相關聯時,它通常在全局範圍內,但最好是組織代碼,因此我建議您在最終代碼中避免這種情況,並將其放入命名空間中。 (http://www.cplusplus.com/doc/tutorial/namespaces/瞭解更多信息) – 2013-02-20 18:13:51