C++ 函式定義
函式定義與函式宣告的不同之處在於,前者提供函式主體,也就是構成函式的程式碼。 函式定義的形式為:
decl-specifiers declarator [cv-qualifers] [exception-specification]
{
// function body
}
decl-specifiers declarator [cv-qualifers] =default;
decl-specifiers declarator [cv-qualifers] =delete;
定義的組件包括:
宣告規範,如函式宣告中所述。
宣告子 (本文稍後說明)。
選擇性的 const 或 volatile 限定詞。 在此內容中,const 只能用於類別成員,以表示函式不會修改類別的資料成員。
例外狀況規格,描述函式可能擲回的例外狀況。 請參閱 例外狀況規格。
函式主體,包括用大括號 {} 括住的陳述式。
=default;,如果是明確預設定義。
=delete;,如果是已刪除的定義。
宣告子的格式為:
修改傳回類型的選擇性指標或參考運算子。
選擇性的 Microsoft 專有修飾詞。 請參閱 Microsoft 專有的修飾詞。
函式的名稱。 如果函式是類別或結構的成員,則可使用範圍解析運算子限定名稱。
引數宣告清單會放在括號 () 中。
若是建構函式,則為選擇性的建構函式初始設定式 (本文稍後說明)。
如需宣告子在這類情況下之形式的詳細資訊,請參閱函式宣告中有關傳回函式指標之函式的註解。
引數宣告清單宣告的型式引數是在函式主體的範圍內。
下圖顯示函式定義的組件。 陰影區域是函式主體。
函式定義的組件
語法建構函式初始設定式項目只會在建構函式中使用。 其目的是要允許初始化基底類別及包含的物件。 如需建構函式初始設定式使用方式的詳細資訊,請參閱初始化基底和成員。
只能為特殊成員函式宣告明確預設的定義。 當特殊成員函式明確地預設時,實作會定義它,就像具有隱含定義一般,不過,它可能是非內嵌 (隱含宣告的特殊成員函式一定會內嵌)。 如需預設函式的詳細資訊,請參閱 C++11 功能的支援 (現代 C++)中的<預設和已刪除的函式>一節。
已刪除的定義 (也稱為被刪除的函式) 會以隱含方式內嵌。 明確或隱含參考已刪除的函式 (除了宣告該函式) 之程式為語式錯誤。 如需已刪除的函式的詳細資訊,請參閱 C++11 功能的支援 (現代 C++)中的<預設和已刪除的函式>一節。