静态局部变量与静态函数作用

有些时候,在函数中是必须要使用static变量的,比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

静态函数的分类

C++ 中的静态函数可以分为全局静态函数和类的静态函数。
类的静态函数

类的静态函数使用类名来访问,在函数体中不能访问非静态成员。


全局静态函数

全局静态函数与全局普通函数想对应。与全局静态变量和全局变量的关系相似,全局静态函数的可见域为定义它的文件,而全局普通函数可以通过extern + 函数名的形式在其它文件中调用它。

 

 

首先,静态函数只有当程序结束的时候才从内存消失,生命周期长。而非静态则是动态加载到内存,不需要的时候就从内存消失。

而调用类中的静态函数,无需创建对象就可以调用了,因为当类初始化的时候,就已经加载了静态函数,所以静态函数要比对象加载的早,对象只有被创建的时候才会在堆内存中创建空间。

  另外,静态函数中不能使用非静态变量,静态方法不可以定义this,super关键字(因为静态比对象先加载,而this必须首先加载,所以导致冲突,不能使用);非静态函数可以访问静态变量。
 

静态成员函数的特点:

    被类的所有的对象共有,不属于某一个对象。通过类名::就可以直接调用。

    跟普通的成员函数比,没有隐藏的this指针作为参数。这一点可用于封装线程类。

    静态成员函数只可以访问静态成员变量。

    静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值。

 

 

C++ Primer关于静态成员举了个例子,是说一个银行账户类需要一个数据成员来表示当前的利率。在这个类中,我们所希望的是利率与类相关联,而不是与类的每个对象相关联。这个时候就可以用静态成员函数,可以提高效率,而且一旦利率浮动,每个对象也能相应使用新的值。
还有一些场景是必须用静态成员函数的,普通成员函数会出错...

类的静态成员作用:

为了实现类的多个对象之间的数据共享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值