头文件定义static变量

记录一个问题:

在头文件test.h中定义了static变量如下:

static char* str;

然后在a.cpp和b.cpp中都包含了test.h,并在这两个cpp中使用了str,然后发现,运行过程中str的值一直变,看了半天发现,str的指针,在a.cpp中是一个,在b.cpp中是另一个。

然后查资料发现:

定义全局变量时使用static,意味着该变量的作用域只限于定义它的源文件中,其它源文件不能访问。既然这种定义方式出现在头文件中,那么可以很自然地推测:包含了该头文件的所有源文件中都定义了这些变量,即该头文件被包含了多少次,这些变量就定义了多少次。

所以这里str虽然只定义了一次,但是实际在两个cpp中是两个完全不同的变量。

你可能感兴趣的:(基础知识,c++,c语言,qt)