static做用

      存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是惟一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量。函数

 

0x01  (普通)全局变量与静态全局变量 (隐藏)this

      未加static前缀的全局变量和函数都具备全局可见性,其它的源文件也能访问全局变量名或者函数名前加static,就会对其它源文件隐藏。利用这一特性能够在不一样的文件中定义同名函数和同名变量,而没必要担忧命名冲突spa

      static全局变量只初始化一次,防止在其余文件中被引用。指针

 

 

0x02   (普通)局部变量与静态局部变量对象

      局部变量改成静态变量后是改变了它的存储方式(惟一的一次初始化),即改变了它的生存周期。blog

      做为static局部变量在函数内定义,它的生存期为整个源程序,可是其做用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。作用域

// StaticDemo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>

int Function();
int main(void)
{
	for (int i = 0; i <= 10; ++i)
		printf("%d\n",Function());
	return 0;
}

int Function() {
	static int StaticNumberUnitOnlyOnce = 666;      //  存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是惟一的一次初始化。
	return StaticNumberUnitOnlyOnce--;              //在static出现前,要达到一样的功能,则只能使用全局变量: 
}

  

0x03  (普通)函数和静态函数it

    未加static前缀的全局变量和函数都具备全局可见性,其它的源文件也能访问,全局变量名或者函数名前加static,就会对其它源文件隐藏。利用这一特性能够在不一样的文件中定义同名函数和同名变量,而没必要担忧命名冲突。io

 

0x04   C++中的类成员声明staticclass


  静态数据成员是类的成员,而不是对象的成员,这样就出现如下做用:

  (1)类的静态成员函数是属于整个类而非类的对象,因此它没有this指针,这就致使 了它仅能访问类的静态数据和静态成员函数。      

  (2)不能将静态成员函数定义为虚函数。      

相关文章
相关标签/搜索