码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++:static关键字


    五、static关键字

    1、static修饰成员变量

    ●static修饰成员变量,被称为静态成员变量

    特点:

    1、静态成员变量的空间开辟以及释放和对象的空间开辟、释放没有关系。

    2、静态成员变量,需要在类内声明,类外初始化。(在初始化时,就在开辟空间)

    3、所有对象共享一份数据

    注意:逻辑上该静态成员变量还是属于类的,所以需要作用域符号来初始化 int Person::n = 12;

    ●静态成员变量,可以通过类名直接访问Hero::n, (当然对象名肯定也可以)

    非静态成员只能通过对象名来访问,Hero h1; h1.n2

    1. #include
    2. using namespace std;
    3. class Hero
    4. {
    5. public:
    6. int h_atk;
    7. string h_name;
    8. int h_arm;
    9. static int dragon_buf;
    10. };
    11. int Hero::dragon_buf =0;
    12. void test01()
    13. {
    14. Hero h1;
    15. h1.h_name="yasuo";
    16. h1.dragon_buf +=10;
    17. }
    18. void test02()
    19. {
    20. Hero h2;
    21. h2.h_name="dsdf";
    22. cout<<"name:"<"atk:"<
    23. }
    24. int main(int argc, char *argv[])
    25. {
    26. Hero::dragon_buf=4;
    27. test01();
    28. test02();
    29. return 0;
    30. }

    2、static修饰成员函数

    ●static修饰成员函数,被称为静态成员函数

    1. #include
    2. using namespace std;
    3. class Hero
    4. {
    5. public:
    6. void HerInfo()
    7. {
    8. cout<<"name:"<
    9. cout<<"atk:"<
    10. cout<<"arm:"<
    11. cout<<"buf:"<
    12. }
    13. int h_atk;
    14. string h_name;
    15. int h_arm;
    16. static int dragon_buf;
    17. };
    18. int Hero::dragon_buf =0;
    19. void test01()
    20. {
    21. Hero h1;
    22. h1.h_name="yasuo";
    23. h1.dragon_buf +=10;
    24. }
    25. void test02()
    26. {
    27. Hero h2;
    28. h2.h_name="dsdf";
    29. cout<<"name:"<"atk:"<
    30. }
    31. int main(int argc, char *argv[])
    32. {
    33. Hero::dragon_buf=4;
    34. test01();
    35. test02();
    36. return 0;
    37. }

    特点:

    1、静态成员函数,是被所有对象共享的函数。

    2、静态成员函数在编译阶段展开,所以内部的变量需要在编译阶段就存在,(所以静态成员函数内部只能访问静态成员变量,不能访问非静态成员变量.因为静态成员变量在编译阶段已经存在了)

    ●静态成员函数与普通成员函数主要的区别就是没有this指针,所以函数内部不区分对象

    所以静态成员函数可以直接使用类名来访问:Hero::static_fun()

  • 相关阅读:
    aop+springboot实现数据字典表
    LinkedList详解
    使用$test$plusargs提高RTL验收速度
    Primavera Unifier Project Control 项目控制要点
    43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面
    MLX90640 开发 微型红外成像仪
    数据结构知识点总结12-(第六章.图)-图的存储结构及图的遍历
    PPLiteSeg训练自己的数据集实现自动驾驶并爆改制作成API可供其他Python程序调用实时语义分割(超低延时)
    原版畅销36万册!世界级网工打造TCP/IP圣经级教材,第5版终现身
    为什么vscode更新不成功,系统找不到指定路径
  • 原文地址:https://blog.csdn.net/qq_63626307/article/details/126716186
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号