C++中static用法总结

本文详细介绍了C++中static关键字的应用,包括静态变量和静态函数的定义、作用域及使用场景。阐述了如何在类内外使用static修饰符,并解释了它们在不同上下文中的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++中可以用static修饰变量和函数

一、用static修饰变量
1、类外静态变量
  方法: static int staticA = 0;
  用途:
      可以写在.h文件,也可以写在.cpp文件,该语句既是声明也是定义,该变量的作用域都仅限于cpp文件。
      可以在多个cpp文件里定义相同的变量名;也可以在一个h文件里定义,在多个cpp文件里包含这个h文件。
2、类内静态变量
  方法:
      在.h文件里声明
      class ClassA
      {
      public:
          static int a;
      };
      在cpp文件里定义
      int ClassA::a = 1; //不需要static关键词
   用途:
      .h文件里声明变量,但不能初始化变量,必须在某个cpp文件里定义该静态变量(定义的时候可以初始化变量),否则会在链接时报错。
      能访问ClassA的地方都都可以通过ClassA::a来访问该变量。
3、函数内的静态变量
 方法1:
      void func1(int b)
      {
          static int a = b;
      }
 方法2:
      class ClassA
      {
      public:
          void func1(int b)
          {
              static int a = b;
          }
      };
 用途:
     只在第一次调用func1函数的时候初始化变量的值,之后会跳过定义的表达式(包括定义时
     的赋值操作)。
二、用static修饰函数
1、类外静态函数
  方法: static int func1(int a)
        {
            return a+1;
        }
  用途:
      可以写.h文件,也可以写在.cpp文件,该语句既是声明也是定义,不能分开写。
     (每个cpp里的函数都是独立的拷贝);也可以在一个h文件里定义,在多个cpp文件里包含这个h文件。
2、类内静态函数
  方法:
      在.h文件里声明
      class ClassA
      {
      public:
          static int func1(int a);
      };
      在cpp文件里定义
      int ClassA::func1(int a)//不需要static关键词
      {
          return a+1;
      } 
   用途:
       可以在声明的时候定义,在可以在cpp文件里定义。
       全局只有一份,能访问ClassA的地方都可以通过ClassA::func1来访问该函数。
三、总结
    1、类外的静态变量和静态函数的作用域是文件,而类外的变量和函数的作用域才是全局的,不要混淆;
      声明即定义,不需要在cpp文件里再定义一次。
    2、函数内的静态变量只声明、定义、初始化一次。
    3、类内的静态变量和静态函数的作用域是全局的;
      声明和定义可以分开,声明定义在h文件,定义放在cpp文件;
      类内的静态变量不能在.h文件里初始化,需要在cpp文件里初始化;
      在cpp文件里定义静态变量和静态函数时不需要也不能加上static关键词。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值