当前位置: 首页 > news >正文

C++ ——static关键字

1、static修饰局部变量---->静态局部变量

特点:

(1)第一次调用时创建,然后第一次调用结束时没有被回收,以后每次调用,都延用上一次调用结束时的值,直到程序结束时,才被回收

(2)由这个类创建的所有对象共享同一个静态局部变量

#include <iostream>
using namespace std;
class Test{
private:
    int num;
public:
    Test(int num)
        :num(num){}
    void add(){
        static int number=90;  //静态局部变量
        number++;
        cout<<"number="<<number<<endl;
    }
};
int main(){
    Test t(0);
    t.add();  //91
    t.add();  //92
    t.add();  //93
    //由这个类创建的所有对象共享同一个静态局部变量
    Test t2(7);
    t2.add();  //94
    return 0;
}

2、static修饰成员变量---->静态成员变量

特点:

(1)必须类内声明,类外初始化

(2)所有对象共享,生命周期是程序运行时创建,程序结束时销毁

(3)公共权限下,除了可以使用对象访问静态成员变量,也可以使用类名::静态成员变量名进行访问,推荐使用类名访问

#include <iostream>
using namespace std;
class Test{
private:
    int num;  //普通成员变量
public:
    //类内声明
    static int num2;  //静态成员变量
public:
    Test(int num)
        :num(num){}
};
//类外初始化
int Test::num2=90;
int main(){
    //静态成员变量的访问
    //两种方式:通过对象、通过类名(推荐使用)
    Test t3(9);
    cout<<t3.num2<<endl;  //对象访问
    cout<<Test::num2<<endl;  //类名访问
    return 0;
}

3、static修饰成员函数---->静态成员函数(方法)

特点:

(1)即可以通过类名调用,也可以通过对象调用

(2)静态成员函数只可以访问静态成员变量,因为其内部没有this指针,所以不可以访问非静态成员变量

(3)静态成员函数声明和定义分离时,static需添加在声明处(类内)

#include <iostream>
using namespace std;
class Test{
private:
    int num;  //普通成员变量
public:
    static int num2;  //静态成员变量
public:
    Test(int num)
        :num(num){}
    //静态成员函数
    static void fn1(){
        cout<<"静态成员函数"<<endl;
        //cout<<this<<endl;  //报错,静态成员函数没有this指针,所以不可以访问非静态成员变量
        cout<<num2<<endl;  //只可以访问静态成员变量
    }
    //类内声明
    static void fn2();
};
//类外定义
void Test::fn2(){
    cout<<"静态成员函数"<<endl;
}
int main(){
    Test t2(7);
    //静态成员函数的调用:通过对象、通过类名(推荐使用)
    Test::fn1();  //类名调用
    t2.fn1();  //对象调用
    return 0;
}

相关文章:

  • ubuntu20.04安装nccl2.16.5
  • 物联网平台建设方案
  • 直线模组在搬运过程中需要注意什么?
  • 网络安全扫描--基础篇
  • Flowith.io 初探:DeepSeek-R1免费用,用画布式 AI 提升效率和创意
  • Deepseek部署-本地windows非系统C盘 -可视化 -4060甜品卡
  • Pikachu靶场-SSRF漏洞
  • DeepSeek视角下学术论文创新点探索干货分享!
  • 详述发票二维码与python解析技术
  • 链表和list
  • 情书网源码 情书大全帝国cms7.5模板
  • Vue 记录用户进入页面的时间、离开页面的时间并计算时长
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑤】
  • 网工项目理论1.7 设备选型
  • 嵌入式 Linux 设备树:为什么需要设备树?
  • 基于单片机ht7038 demo
  • 演绎推理及其与数学的关系介绍
  • Python大数据可视化:基于Python对B站热门视频的数据分析与研究_flask+hive+spider
  • 【Scrapy】Scrapy教程4——命令行工具
  • 电子电气架构 --- OEM对软件自研的期待
  • 建设网站前台费用/保定seo建站
  • 代理推广怎么做/搜索引擎排名优化seo课后题
  • 长期供应小企业网站建设/百度关键词搜索量排名
  • 网站推广工具工作室/网络广告文案案例
  • 易语言做返利网站/北京今日重大新闻
  • 如何免费建一个wordpress/seo推广方法