Peranan extern, statik dan boleh ubah dalam pengisytiharan fungsi C++: memahami semantik dan kesannya

PHPz
Lepaskan: 2024-05-01 17:09:02
asal
329 orang telah melayarinya

Peranan extern kata kunci merujuk kepada fungsi dalam fail sumber lain mengehadkan skop fungsi kepada fail sumber semasa membolehkan objek yang diisytiharkan sebagai const diubah suai dalam fungsi

. extern, statik dan boleh ubah dalam pengisytiharan fungsi C++ : Fahami semantik dan fungsinyaC++ 函数声明中 extern、static 和 mutable 的角色:理解它们的语义和作用

Dalam C++, kata kunci luaran, statik dan boleh ubah dalam pengisytiharan fungsi mempunyai semantik dan fungsi yang berbeza.

extern

kata kunci luaran menunjukkan bahawa fungsi ditakrifkan dalam fail sumber lain.

Ia membolehkan fungsi dirujuk dalam fail sumber semasa tanpa perlu memasukkan definisi fungsi.
  • Ini sangat berguna apabila terdapat berbilang fail sumber yang membentuk program.
  • Contoh:
// header.h
extern int add(int a, int b);

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

Dalam source1.cpp, kata kunci luar membenarkan untuk merujuk fungsi tambah yang diisytiharkan dalam header.h tanpa menyertakan takrifan fungsi tambah.

statik

kata kunci statik digunakan untuk mengehadkan skop sesuatu fungsi.

Menggunakan kata kunci statik dalam pengisytiharan fungsi bermakna fungsi itu hanya boleh digunakan dalam fail sumber ini dan tidak boleh diakses dalam fail sumber lain.
  • Biasanya digunakan untuk mentakrifkan fungsi tambahan yang hanya digunakan dalam fail sumber semasa.
  • Contoh:
// source1.cpp
static int localFunction() {
  return 10;
}

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

Disebabkan kata kunci statik, localFunction hanya boleh diakses dalam source1.cpp dan bukan dalam fail sumber lain.

mutable

kata kunci boleh ubah digunakan untuk membenarkan pengubahsuaian objek const diisytiharkan dalam pengisytiharan fungsi.

Mengisytiharkan objek const dalam pengisytiharan fungsi biasanya bermakna objek itu tidak boleh diubah.
  • kata kunci boleh ubah membenarkan mengubah suai objek const di dalam fungsi.
  • Contoh:
// source1.cpp
class MyClass {
public:
  const int x = 10; // 不可变数据成员
  mutable int y = 20; // 可变数据成员
};

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

Disebabkan kata kunci boleh ubah, fungsi modifyConst boleh mengubah suai ahli data y kelas MyClass, walaupun y ialah const. Memahami semantik dan kesan kata kunci ini adalah penting untuk menulis program C++ yang mantap dan cekap.

Atas ialah kandungan terperinci Peranan extern, statik dan boleh ubah dalam pengisytiharan fungsi C++: memahami semantik dan kesannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan