最近自己在研究C++中static成员变量的注意事项,只是自我研究,仅供参考:
例如:
file1.h
#ifndef FILE_1_H #define FILE_1_H void func1(void); void func2(void); static int func(void); #endif // FILE_1_H
file1.cpp
#include "file1.h"
#include <iostream>
using namespace std;
static int a;
void func1(void)
{
cout << "a = " << a << endl;
cout << "call a:" << endl;
cout << "a = " << a << endl;
a++;
return;
}
void func2(void)
{
cout << "call func2:" << endl;
cout << "a = " << a << endl;
a++;
return;
}
void func(void)
{
cout << "call static func" << endl;
return;
}
编译错误如下:
C:UsersEADEFJIcodeblocksProjects1007file1.cpp||In function `void func()':|
C:UsersEADEFJIcodeblocksProjects1007file1.cpp|23|error: new declaration `void func()'|
C:UsersEADEFJIcodeblocksProjects1007file1.h|6|error: ambiguates old declaration `int func()'|
C:UsersEADEFJIcodeblocksProjects1007file1.cpp|23|warning: 'void func()' defined but not used|
||=== Build finished: 2 errors, 1 warnings (0 minutes, 0 seconds) ===|
所以,最好不要在头文件中定义(初始化)某个静态数据成员或静态成员函数,而应该在相应的.cpp文件中定义及使用