首頁  >  文章  >  後端開發  >  C++ 函數宣告中 extern、static 和 mutable 的角色:理解它們的語意和作用

C++ 函數宣告中 extern、static 和 mutable 的角色:理解它們的語意和作用

PHPz
PHPz原創
2024-05-01 17:09:02308瀏覽

關鍵字作用extern引用其他來源檔案中的函數static限制函數的作用域到目前來源檔案mutable允許在函數內修改宣告為const 的物件

C++ 函数声明中 extern、static 和 mutable 的角色:理解它们的语义和作用

##C 函數宣告中extern、static 和mutable 的角色:理解它們的語意和作用

在C 中,函數宣告中的extern、static 和mutable 關鍵字有不同的語意和作用。

extern

    extern 關鍵字表示函數在其他原始檔案中定義。
  • 它允許在目前原始檔中引用該函數,而不必包含該函數的定義。
  • 當有多個原始檔案組成一個程式時,這非常有用。

範例:

// header.h
extern int add(int a, int b);

// source1.cpp
#include "header.h"
int main() {
  int sum = add(1, 2);
  return 0;
}

在source1.cpp 中,extern 關鍵字允許引用在header.h 中宣告的add 函數,而無需包含add 函數的定義。

static

    static 關鍵字用來限制函數的作用域。
  • 在函數宣告中使用 static 關鍵字,表示函數只能在該原始檔中使用,不能在其他來源檔案中存取。
  • 通常用來定義只在目前原始檔中使用的輔助函數。

範例:

// source1.cpp
static int localFunction() {
  return 10;
}

int main() {
  int x = localFunction(); // 可以访问 localFunction
  return 0;
}

由於 static 關鍵字,localFunction 只可以在 source1.cpp 中訪問,而不能在其他來源檔案中存取。

mutable

    mutable 關鍵字用於允許修改函數宣告中宣告的 const 物件。
  • 在函數宣告中宣告 const 對象,通常表示該物件是不可變的。
  • mutable 關鍵字允許在函數內部修改 const 物件。

範例:

// source1.cpp
class MyClass {
public:
  const int x = 10; // 不可变数据成员
  mutable int y = 20; // 可变数据成员
};

void modifyConst(MyClass& obj) {
  obj.y++; // 允许修改 y,因为 y 是 mutable
}

由於 mutable 關鍵字,modifyConst 函數可以修改 MyClass 類別的 y 資料成員,即使 y 是 const 的。

理解這些關鍵字的語意和作用對於編寫健全且有效的 C 程式至關重要。

以上是C++ 函數宣告中 extern、static 和 mutable 的角色:理解它們的語意和作用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn