ホームページ > バックエンド開発 > C++ > C++ 関数宣言における extern、static、mutable の役割: それらのセマンティクスと効果を理解する

C++ 関数宣言における extern、static、mutable の役割: それらのセマンティクスと効果を理解する

PHPz
リリース: 2024-05-01 17:09:02
オリジナル
354 人が閲覧しました

キーワード function extern は、他のソース ファイル内の関数を参照します。 静的に関数のスコープを現在のソース ファイルに制限します。 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 キーワードにより、add 関数の定義を含めずに header.h で宣言された 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 関数は、y が const であっても、MyClass クラスの y データ メンバーを変更できます。

これらのキーワードのセマンティクスと効果を理解することは、堅牢で効率的な C プログラムを作成するために重要です。

以上がC++ 関数宣言における extern、static、mutable の役割: それらのセマンティクスと効果を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート