##static用来控制变量的存储方式和可见性## 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间。在函数执行结束后,分配的空间会被立即释放掉。如何在保障函数体内变量的私有性前提下,使该变量的值保存至下一次调用的时候呢?此static就派上了用场。当需要一个数据对象为整个类而不是某个对象服务,同时又力求不破坏的封装性,即要求此成员隐藏在成员的内部,对外不可见。 要想深入了解static的机制,就要理解静态与非静态变量:静态的成员存在于内存,非静态成员需要实例化才会分配内存。所有没有加static的成员都是非静态成员。话不多说,先上程序实例帮助理解:
#include<iostream>using namespace std;//含有静态变量的函数int func_1(void) { static int static_para=0; //上面这句话在func_1第i次调用不再被执行(i>1) static_para++; return static_para;}//不含有静态变量的函数int func_2(void) { int no_static_para = 0; no_static_para++; return no_static_para;}int main() { int i, j; cout << "非静态" << " " << "静态" << endl; //设置循环,连续调用两个函数10次 for (int k = 0; k < 10; k++) { j = func_1(); i = func_2(); cout <<i<<" "<<j<<endl; } return 0;}程序运行的结果:
新闻热点
疑难解答