作用一记忆功能:
int Fun()
{
int stiCount = 0; // 非 static 变量
stiCount++;
return stiCount;
}
int main()
{
for(int i = 0; i < 5; i++)
{
int j;
j = Fun();
cout<<j;
}
}
输出结果为:11111
int Fun()
{
static int stiCount = 0; //static 变量
stiCount++;
return stiCount;
}
int main()
{
for(int i = 0; i < 5; i++)
{
int j;
j = Fun();
cout<<j<<endl;
}
}
输出结果为:12345
static类型的紧初始化一次,存储在静态区,生命周期直至程序结束.
作用二仅存活一个实体:
class Static
{
public:
static int stiCount;
Static()
{
stiCount++;
cout<<stiCount;
}
};
int Static::stiCount = 0; //static静态成员变量必须在类外赋值
int main()
{
Static st1;
Static st2;
}
这里的stiCount变量不属于任何一个对象
静态成员变量没有this指针
它仅仅属于类本身,仅存活一个实体
这样可以节省存储空间
作用三对象指针数据共享:
class Static
{
public:
static int stiCount;
Static()
{
stiCount++;
cout<<stiCount;
}
};
int Static::stiCount = 0;
int main()
{
Static st1;
Static st2;
st1.stiCount = 6;
cout<<st2.stiCount ;
}
这个功能是在功能二上建立的
类的所用对象可以对类的静态成员修改
对象之间可以进行数据共享
本文通过三个具体实例详细解析了C++中static关键字的作用:包括作为函数内的局部变量时的记忆功能、作为类成员时确保整个类中仅存在一个实例的能力,以及如何实现类的所有对象间的数据共享。
3163

被折叠的 条评论
为什么被折叠?



