C++多个文件共用一个全局变量
发布日期:2021-05-10 05:58:28 浏览次数:22 分类:精选文章

本文共 1421 字,大约阅读时间需要 4 分钟。

C++ 的全局变量与类实例的使用说明

在编写 C++ 代码时,理解全局变量的概念和使用方式是非常重要的。通过本文,你将了解如何在多个文件中有效管理全局变量以及如何将类或结构体实例作为全局变量使用。

全局变量的基础使用

假设你正在编写一个 C++程序,其中包含一个文件 a.cpp

#include "myhead.h"
#include
int main() {
std::cout << a;
}

你会发现即使没有定义变量 a,编译器并不会报错。这是因为你的程序中包含了一个自定义头文件 myhead.h,其内容为:

extern int a;

这种情况下,extern 修改了变量 a 的属性,使其不再是局部或静态变量,而是以全局变量形式存在。实际上,extern 实际上只是对变量的一个声明,表示该变量将在外部定义。这意味着变量 a 的定义可能存在于另一个文件中,比如 third.cpp

int a;

这样,a 成为了一个全局变量。这种方式允许多个文件共享同一个变量,非常有用,特别是在大型项目中。

全局变量的特性

全局变量具有以下几点特点:

  • 可在多个文件中使用:如果一个头文件中包含 extern int a;,那么多个文件可以引入该头文件而直接使用 a,没有任何问题。

  • 可以被多个程序使用:假设你在不同的项目中使用相同的全局变量,这会节省开发和维护的时间。

  • 赋值和修改:全局变量可以被赋值和修改。例如:

    int a = 10;
    a = 20;
  • 常量与全局变量的区别:如果变量被声明为 const,则它将被视为常量,不能被修改。

类和结构体实例的全局使用

除全局整型变量外,你也可以将类或结构体实例作为全局变量。这种做法在某些场景下非常有用。

举例来说,假设你有一个 Student 类:

#include 
class Student {
public:
char *name;
int age;
float score;
public:
void say() {
printf("%s的年龄是 %d,成绩是 %f\n", name, age, score);
}
};

然后,你可以在另一个文件 Student.cpp 中定义一个全局变量:

#include "Student.h"
Student stu;

接下来,在你的主程序 a.cpp 中,你需要确保能使用 stu。为此,你需要在 myhead.h 中添加以下内容:

#include "Student.h"
extern int a;
extern Student stu;

现在,你的程序中可以像这样使用 stu

#include "myhead.h"
#include
int main() {
a = 8;
std::cout << a;
stu.name = "张三";
stu.say();
}

这样,stu 就成为了一个全局实例,可以随时访问和修改。

总结

通过上述内容,你可以看到在 C++ 中,使用全局变量是一个灵活且强大的方式。无论是整型变量还是类/结构体实例,都可以通过 extern 进行声明,从而在多个文件中共享。理解这一点并掌握相应的编码技巧,将对你的程序设计和协作开发非常有帮助。

上一篇:C++命名空间namespace的使用
下一篇:VS报错:不能将 “const char *“ 类型的值分配到 “char *“ 类型的实体

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月26日 08时06分09秒