使用static修饰在头文件中修饰的变量,此时不会产生冲突(用static修饰的全局变量的作用域为定义的源文件),在多个源文件中引用该头文件,等于是在每个源文件中都定义了该变量一次,而且此变量仅在本源文件中有效,这样的使用方式不是本身想要的全局变量,也浪费了内存空间,不推荐使用
eg:
test.h:
#ifndef TEST_H
#define TEST_H
#include <iostream>
using namespace std;
static int gi;
void print_test();
#endif
test.cpp:
#include "test.h"
void print_test()
{
gi++;
cout <<&gi<<":"<< gi<< endl;
}
main.cpp:
#in

本文讨论了在C++中,如果在头文件中使用static修饰全局变量,会导致每个包含该头文件的源文件都有独立的变量副本,这种做法不仅非全局作用域,还可能造成内存浪费,因此并不推荐。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



