dhdb  

static的使用

一、用于静态生存期变量

1、什么是静态生存期变量

如果对象生存期与程序的运行周期一样,则它具有静态生存期,如果在函数内部局部作用域中声明具有静态生存期的对象,就需要用到static关键字,该变量就是静态生存期变量。列如:
static int i
i便是具有静态生存期的变量,即为静态变量。

2、局部作用域中静态变量的特点如下:
它不会随每次调用函数都产生一个新的副本,当在定义该变量的同时为他赋初值,它就会被初始化,且该函数被执行完后,下次再调用时,该变量的值会保持上一次的值继续使用,若未被初始化时,该变量会被赋予0值初值。但是对于动态生存期变量,不指定初值意味着初值不确定。

下面将通过段代码实现静态变量与具有动态生存期的变量之间的区###运行结果如下

由运行结果显示上列两个函数中虽然都具有相同的变量,但是却不相互影响,并且具有静态生存期的变量只初始化一次,重复多次使用时,会继续上次的值接着使用

二、用于类的静态成员、静态函数成员

1、什么是静态数据成员

一个类的所有对象具有相同的属性,如果某个属性为整个类所共有,不属于任何一个具体对象,则采用static关键字来声明为静态成员。

2、静态成员在每个类只有一个副本,由该类的所有对象共同维护和使用,从而实现同一类的不同对象之间的数据共享。

注意:在类中声明静态数据成员是需定义在私有成员中,并且初始化需定义在类外,它们是配套使用的。

列如

、、、
class Point
{
 private:
 static int count;   //静态数据成员的声明
};
int Point::count=0;  //静态数据成员的初始化
、、、

当想要输出类中静态数据成员时,如果想在声明对象之前,由类中的函数输出这个静态数据的初始化时,若通过类名调用这个函数,那么编译器会报出如下错误。

这时就需要用static定义一个静态函数成员。它的优点就是在类中除了通过对象调用函数外,还可以通过类名调用,而非静态成员函数只能通过对象调用。

以下代码时具有静态数据成员和函数成员的Point类

运行结果

posted on 2019-09-28 16:12  dhdb  阅读(436)  评论(0编辑  收藏  举报