2014-05-03 82 views
-6

當在C++聲明的方法做你這樣做例如如下(如果類名稱是詞法分析器例如):C++函數不同格式

bool Lexer :: IsDigit() 
{ 
//code 
} 

bool isDigit() 
{ 
//code 
} 

因爲我http://www.cplusplus.com/doc/tutorial/functions/

+0

你迷惑聲明,定義和內聯定義是什麼? –

+2

Nah。他對自由函數沒有任何線索,我的猜測 – sehe

+1

您是否來自Java? C++具有(免費)功能和方法。 – keyser

回答

2

喜歡這樣:

我與第一個樣式但是我在這個網站找到的最後一個,以及諸如使用
struct Lexer 
{ 
    bool IsDigit() { return true; } 
    // ... 
}; 

或者是這樣的:

struct Lexer 
{ 
    bool IsDigit(); 
    // ... 
}; 

bool Lexer::IsDigit() { return true; } 

第一個版本包括在類定義內的成員函數定義。後者只將成員函數聲明放在類定義中,但將成員函數定義保留在外(或「脫序」)。

0

第二個例子是要麼

a)一種自由站立功能或
b)一種內嵌方法定義(如果它是一類體內)。

第一個示例是外部方法定義。

class Lexer { 
    bool IsDigit(); // method declaration 
} 
bool Lexer :: IsDigit() { return false; } // method definition 

bool IsDigit() { return false; } // free-standing function 

class Lexer2{ 
    bool IsDigit { return false; } // inline method definition 
} 

它們可以被稱爲像這樣:

Lexer l; 
l.isDigit(); // calls the first method 
isDigit(); // calls the free-standing function 
Lexer2 l2; 
l2.IsDigit(); // calls the latter method 
+0

願意解釋爲什麼? – Appleshell

+0

你爲什麼認爲這是錯的?我刻意留下了回報聲明,因爲這不是這個答案的意思。如果你認爲他們在問題的背景下至關重要,只需編輯它們。或者你的意思是因爲它是私密的? – Appleshell

+0

這不是一個SSCCE,這是* only *旨在顯示問題中提到的功能的「格式」。 – Appleshell