C++学习笔记(十):c++中的静态(static)

  • static是在各种编程语言中均较为常用的一个关键字。
  • static包含两种含义,一种是类或结构体外部使用static关键字,另一种是类或结构体内部使用static关键字。类或结构体外部使用static,意味着声明的static符号在链接时,将只在内部链接,只能对定义它的翻译单元可见。类或结构体内部使用static,该static变量将于类的所有实例共享内存,意味着该static变量在类的所有实例中仅有一个实例。
  • 静态变量或函数意味着,当需要将这些静态函数或变量与实际定义的符号链接时,链接器不会在这个翻译单元作用域之外寻找静态函数或变量符号的定义。
  • 从上述代码可以看到,在Static.cpp中定义的静态变量s_Variable并不会影响Main.cpp中继续定义s_Variable变量,如果把Static.cpp中s_Variable的static去掉,编译的时候就会报错。
  • 类或结构体的静态方法只能调用类或结构体的静态变量。
  • 如果上述代码struct中包含静态的变量z,则在链接的时候会报以上图片中的错,因为我们需要在使用变量z之前定义变量z。
  • 从上图可以看到,类或结构体中的静态变量或静态方法在类或结构体的所有实例中仅有一个实例,上诉实例中静态变量z在e1和e2中均为10;因此类或结构体中静态变量或方法通过上述方式调用完全没有意义,可采用下图的形式进行调用。
  • 局部静态变量:允许我们声明一个变量,该变量的生命周期相当于整个程序的生命周期,但它的作用域被限制在该函数中。示例代码如下:
  • 以上为静态局部变量在实现单例模式中的应用,当然实际实现中,需要将Singleton类的默认构造函数等删除。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值