共用方式為


函式宣告語法

函式可以是全域的,或是類別或結構的成員。 函式是使用下列序列宣告:

[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] declarator [cv-qualifer] 
[exception-spec]
[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] [*|&] [ms-modifer] identifier 
( argument-list ) [cv-qualifer] [exception-spec]
  1. 宣告規範。 請參閱規範

    • 在類別中,選擇性的 friend 規範。

    • 選擇性的儲存類別規範。若是全域函式,允許的儲存類別規範為 static 和 extern。若是類別成員函式,則不允許 extern

    • 選擇性的函式規範。若是全域函式,唯一允許的函式規範是 inline。若是類別成員函式,則允許 virtualinline,若是建構函式,則允許 explicit

    • 指出傳回類型的類型規範 (受到使用 * 或 & 修改指標或參考類型的影響)。

  2. 宣告子。

    • 修改傳回類型的選擇性指標或參考運算子

    • 指定呼叫慣例的選擇性 Microsoft 專有修飾詞。請參閱 Microsoft 專有修飾詞。

    • 函式的名稱。如果函式是類別或結構的成員,則可使用範圍解析運算子限定名稱。

    • 引數宣告清單會放在括號 () 中。

    • 選擇性的 const 或 volatile 限定詞。在此內容中,const 只能用於類別成員,並且用來表示函式不會修改類別的資料成員。

如果傳回類型是函式指標,則宣告子的語法可能會更複雜,如下所述。

  1. 選擇性例外狀況規格,指出函式會擲回哪種例外狀況。請參閱例外狀況規格

以此方式宣告的識別項類型,其建構方式可能如下:const 或 volatile (如果已指定) 函式,採用指定的引數清單,傳回宣告規範所表示的類型。

下列範例將示範兩個簡單的函式宣告:

char *strchr( char *dest, char *src );
static int atoi( const char *ascnum ) const;

宣告傳回函式指標的函式

如果要宣告傳回函式指標類型的函式,建議您使用 typedef 宣告函式指標類型的別名。例如

typedef int (*fp)(int);
fp myFunction(char* s); // function returning function pointer

如果沒有這樣做,函式宣告的適當語法可能會從函式指標的宣告子語法推算,方法是將識別項 (在上述範例中為 fp) 取代為函式名稱和引數清單,如下所示:

int (*myFunction(char* s))(int);

上述宣告相當於上面使用 typedef 的宣告。

請參閱

參考

函式宣告