• 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()

  • 相关阅读:
    ES和kibana安装
    其实 Gradle Transform 就是个纸老虎 —— Gradle 系列(4)
    计算机毕业设计(附源码)python助游乐系统
    makefile学习汇总
    NLP 类问题建模方案探索实践
    计算机毕业设计(附源码)python在线共享笔记系统
    iStat Menus v6.72
    SDH设备
    AHU 汇编 实验二
    Linux - 开机启动流程
  • 原文地址:https://blog.csdn.net/qq_63626307/article/details/126716186