静态数据成员在const函数中可以修改,而普通的数据成员是不能修改的! #include<iostream>#include<string>usingnamespacestd;classTest{staticinta;intb;public:voidfun_1(inti=a);//right//void fun_2(int i = b); //这里报错,默认形参必须先先于类的对象而建立,因此要静态数据成员voidtest()const{a++;//...
静态全局变量实际上是对extern变量破坏封装性和可靠性的一种改良。 当省略初始化表达式时,编译器自动以0初始化静态变量。对于数组或结构,编译器将其中的每个元素或成员的所有二进制位都初始化为0。 如果要对extern和static变量进行赋值初始化,只能使用常量表达式来初始化extern变量和static变量,常量表达式包括直接常量、#...
2). 静态成员变量在类外单独分配存储空间,位于全局数据区,因此静态成员变量的生命周期不依赖于类的某个对象,而是所有类的对象共享静态成员变量;3). 可以通过对象名直接访问公有静态成员变量;4). 可以通过类名直接调用公有静态成员变量,即不需要通过对象,这一点是普通成员变量所不具备的。 静态成员函数1). 静态...
静态局部变量的内存在整个程序中有效,但是变量的可见范围与自动局部变量相同。然而,当函数在第一次调用时修改了静态局部变量的值,那么在下一次函数调用时,这个修改后的值也将可用。 👇点击领取👇 👉C语言知识资料合集 静态成员变量 当在类中使用static关键字...
(1)生命周期:在修饰变量的时候,static修饰的静态局部变量只执行初始化一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放,但不改变作用域。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修饰。 (2)可见性:static修饰全局变量或函数时,这个全局变量只能在本文件中访...
1.静态区(static):全局变量,静态变量储存(生命周期是整个工程) 2.栈区(stack):局部变量存储(自动,连续的内存) 3.堆区(heap):动态存储(非常大的内存池,非连续分配) 因为static修饰的局部变量是存储在静态区的,static修饰全局变量时,实际改变的是变量的存储位置。 局部变量放在栈区的,被static修饰后放在了静态区...
1、static修饰变量会延长局部变量的生命周期 当static修饰变量的时候,变量会被存储在静态区,存储出在静态区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化,直到程序运行结束以后才进行变量释放。 2、static修饰的全局变量或者函数具有隐藏特性
生命周期从定义开始,直到程序终止为止。静态成员变量可以被所有类对象共享,因此,它们通常用于保存类对象...
static 修饰局部变量的作用:改变局部变量的生命周期,本质上是改变了局部变量的存储位置,让局部变量不再是在栈区上开辟空间,而是直接在静态区上开辟空间,从而使得局部变量拥有和全局变量一样的生命周期,即随着整个程序生成和销毁。 static 修饰全局变量的作用:改变了全局变量的外部链接属性(可以在其他源文件内被访问),使...
一、变量类型 1.生命周期 变量的生命周期,也称生存期,是指变量值保留的期限。按照生命周期,可将变量分为两类:静态变量和动态变量。 静态变量:变量存储在内存中的静态存储区,在编译时就分配了存储空间,在整个程序运行期间,该变量占有固定的存储单元,变量的值都始终存在,程序结束后,这部分空间才释放。这类变量的生存...