首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++類內定義內聯函數:函數之間需要分號嗎?

     編輯:程式設計綜合問答

直接回答

**不需要**。在類定義體內直接定義函數體(即內聯函數)時,**函數之間不需要分號分隔**。

語法規則解析

  • **分號 `;`** 用於結束**聲明語句**(如變量聲明 `int a;`、函數聲明 `void foo();`)。
  • **大括號 `{ ... }`** 本身就是一個**複合語句/函數體**,已經構成完整的語法單元,天然分隔相鄰函數。

正確示例

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() { ... }              // 定義結尾 **不加** 分號

總結

**類內定義函數體(內聯)**:靠 `}` 分隔,**無分號**。
**類內聲明函數**:靠 `;` 結束,**有分號**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved