C/C++中的static变量和static函数

一. C/C++中的共同特点:

1.static变量:

1)static局部变量

2)static全局变量:

共同点:

           A.生存期存在于整个源程序,也即:只定义一次,直到程序结束后才释放;

           B.当我们没有对他们做初始化时,他们可以被系统自动初始化,一般为0;

              C.都只能在定义他们的源文件中使用,不能被其他源文件使用;

不同点:作用域不同,前者:只能在函数体或语句体中使用

                                    后者:仅在定义他的源文件中使用

注:static全局变量与普通全局变量的区别:

全局变量未加声明的话,默认为非static的,它可以被其他源文件所引用(引用方式为:extern var_type var_name)

static全局变量不能被其它源文件引用;

 

2.static函数:

一般程序中有两种类型的函数:内部函数和外部函数

内部函数也即static函数,外部函数也即加上extern声明的(未加任何声明的也默认为外部函数)

区别是:前者只能在定义它的源文件中被调用,后者可以在其它源文件中被引用(引用方式同普通全局变量的调用方式:extern ret_type func_name(para_type1, para_type2, ............);

 

二. C++中的延伸

static数据成员和static成员函数的异同点:

共同点:

1)两者都只和类相关联,他们独立于该类的任何对象而存在;

2)static关键字只出现在类定义体中的声明处,在类外对他们进行定义时不用再加上static;

不同点:

1)static数据成员只能在类定义体外部定义,此外它不能通过类构造函数进行初始化,只能在定义时初始化;

          例外:对于整型const static数据成员,只要其初始化式是常量表达式就可以在类定义中初始化;

2)static成员函数可以在类定义体内或外定义;

      此外,static成员函数没有this指针,也不能被指定为const,因为:this指针是用来指向调用该函数的对象的,而static成员函数仅与类相关联,何来调用它的对象呢?调用static成员函数需要加上类作用域符,以指明它是哪个类的。同样地,将成员函数声明为const型的就是承诺不会修改该函数所属的对象,而static成员函数根本就和对象没有关系。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值