**不需要**。在類定義體內直接定義函數體(即內聯函數)時,**函數之間不需要分號分隔**。
class Tdate {
public:
// 函數 1:定義直接跟在大括號後,無分號
void set(int m, int d, int y) {
month = m; day = d; year = y;
} // 這裡不用加分號
// 函數 2:緊接上一個函數的右大括號
int isLeapYear() {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
} // 這裡也不用加分號
private:
int month, day, year; // 成員變量聲明**需要**分號結束
};
void set(...) { ... }; // 錯誤:函數定義後多加分號 -> "expected member name or ';' before ';' token"
int isLeapYear() { ... };
若在類內**僅聲明**,類外**定義**時,定義結尾**不加分號**,但類內聲明**必須加分號**:
// 類內
class Tdate {
void set(int m, int d, int y); // 聲明結尾 **必須** 有分號
int isLeapYear(); // 聲明結尾 **必須** 有分號
};
// 類外
void Tdate::set(int m, int d, int y) { ... } // 定義結尾 **不加** 分號
int Tdate::isLeapYear() { ... } // 定義結尾 **不加** 分號
**類內定義函數體(內聯)**:靠 `}` 分隔,**無分號**。
**類內聲明函數**:靠 `;` 結束,**有分號**。