首页 > 代码库 > static extern const

static extern const

static

1.局部变量

// 该变量生命周期不仅仅是进入该函数后,而是整个程序运行期间
void foo()
{
	static int nVar = 0;
	
	printf("var = %d\n", ++nVar);
}

2.保护本地变量

static int g_nVar; // g_nVar只能在本文件中使用,其他文件不能通过extern访问该变量

3.静态成员变量

// 该变量不属于对象,而属于这个类
class Foo
{
public:
	static int nCount;
};

int Foo::nCount = 0;

int main()
{
	cout << Foo::nCount << endl;
	return 0;
}

4.静态成员函数

// 该函数不属于对象,而属于这个类
class Foo
{
public:
	static void ShowClassTag();
};

void Foo::ShowClassTag()
{
	cout << "class Foo" << endl;
}

int main()
{
	Foo::ShowClassTag();
	return 0;
}

const

1.定义常量

const int  nItem = 0;
const int* pnItem = &nItem;

2.保护变量不被外部使用

//file1.c
const int g_nLocalVar = 100;
int g_nVar = 100;

//file2.c
extern const int g_nLocalVar; // 非法声明
extern int g_nVar;            // 合法

extern

1.声明所引用对象已被定义

extern int g_nFoo;

int main()
{
	g_nFoo++;
	cout << g_nFoo << endl;
	return 0;
}

int g_nFoo = 0;

2.声明该变量可被外部使用

// file1.c
extern const int g_nItem;
int main()
{
	cout << g_nItem << endl;
	return 0;
}


// file2.c
// 如果此处不加extern,该变量不能被外部访问的
extern const int g_nItem = 100;