Definition(定義)為實體分配存儲/提供實現;Declaration(聲明)僅介紹名字和類型。每個定義都是聲明,但聲明不一定是定義。
| 情形 | 示例 | 說明 |
|---|---|---|
| extern 變量無初始化 | extern const int a; | 僅聲明;extern const int b = 1; 是定義 |
| 函數聲明無函數體 | int f(int); | 無花括號體 |
| 函數參數聲明 | int f(int x); 中的 x | 參數在函數定義時才定義 |
| 類靜態成員聲明 | static int i; 在類內 | 類外需 int S::i; 定義 |
| 類前向聲明 | struct S; | 不完整類型 |
| 模板參數 | template | 參數非實體 |
| 顯式特化聲明 | template<> struct A | 僅聲明特化存在 |
| typedef / using 別名 | typedef S S2; | 不創建新類型 |
| 枚舉前向聲明 | enum Color : int; | C++11 固定底層類型 |
| using-declaration | using N::d; | 引入名字非定義 |
extern "C" 影響鏈接符號,非定義。inline、模板、靜態成員等。