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

关键字作用extern引用其他源文件中的函数static限制函数的作用域到当前源文件mutable允许在函数内修改声明为 const 的对象C++ 函数声明中 extern、static 和 mutable 的角色:理解它们的语义和作用

关键字作用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 的角色:理解它们的语义和作用的详细内容,更多请关注叮当号网其它相关文章!

文章来自互联网,只做分享使用。发布者:代号邱小姐,转转请注明出处:https://www.dingdanghao.com/article/432155.html

(0)
上一篇 2024-05-01 16:40
下一篇 2024-05-01 17:20

相关推荐

联系我们

在线咨询: QQ交谈

邮件:442814395@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信公众号