当前位置: 首页 > 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;
}

相关文章:

C++ ——static关键字

1、static修饰局部变量---->静态局部变量 特点&#xff1a; &#xff08;1&#xff09;第一次调用时创建&#xff0c;然后第一次调用结束时没有被回收&#xff0c;以后每次调用&#xff0c;都延用上一次调用结束时的值&#xff0c;直到程序结束时&#xff0c;才被回收 &a…...

Jasper AI技术浅析(二):语言模型

Jasper AI 的核心语言模型是基于 OpenAI 的 GPT-4(Generative Pre-trained Transformer 4)构建的。GPT-4 是一种生成式预训练语言模型,利用深度学习技术,特别是 Transformer 架构,来理解和生成自然语言。 1. GPT-4 的基本原理 1.1 Transformer 架构 GPT-4 基于 Transfo…...

QML 部件获得焦点触发的全局槽函数 onActiveFocusItemChanged

在qml的window窗口中&#xff0c;假如添加里许多其他部件&#xff0c;当这些部件改变时&#xff0c;会有一个全局部件焦点改变槽函数触发&#xff0c;就是 onActiveFocusItemChanged 可以通过此槽函数就可以知道当前焦点在哪一个部件上&#xff0c;也可以做一些自动化测试等&…...

【git】工作场景下的 工作区 <-> 暂存区<-> 本地仓库 命令实战 具体案例

&#x1f680; Git 工作区 → 暂存区 → 本地仓库 → 回退实战 Git 的核心流程是&#xff1a; &#x1f449; 工作区&#xff08;Working Directory&#xff09; → git add → 暂存区&#xff08;Staging Area&#xff09; → git commit → 本地仓库&#xff08;Local Repos…...

Python 中从零开始的随机梯度下降

文章目录 一、说明二、了解基础知识的重要性&#xff1a;2.1 什么是梯度下降&#xff1f;2.2 梯度下降的类型&#xff1a; 三、随机梯度下降 &#xff08;SGD&#xff09; 有何不同3.1 随机性的概念&#xff1a;3.2 SGD的优点和缺点&#xff1a; 四、随机梯度下降的分步说明五、…...

期权隐含波动率是什么意思?

财顺小编本文主要介绍期权隐含波动率是什么意思&#xff1f;期权隐含波动率&#xff08;Implied Volatility&#xff09;是根据当前期权市场价格&#xff0c;利用期权定价模型&#xff08;如Black-Scholes模型&#xff09;推导出的关于合约标的理论上的价格波动率。它反映了市场…...

python中使用数据库sqlite3

Python使用sqlite3数据库 python3.x标准库内置了SQLite3 查看sqlite的版本 import sqlite3 sqlite_version sqlite3.sqlite_version print(f"SQLite version: {sqlite_version}") 显示 导入模块连接sqlitte3 import sqlite3 consqlite3.connect("d:/fi…...

JavaScript数组-数组的概念

在JavaScript编程中&#xff0c;数组&#xff08;Array&#xff09;是一种非常重要的数据结构&#xff0c;它允许我们将多个值存储在一个单独的变量中。数组可以包含任意类型的元素&#xff0c;如数字、字符串、对象甚至是其他数组&#xff0c;并提供了丰富的内置方法来操作这些…...

英语---基础词汇库

〇、动词类&#xff08;常见谓语表述&#xff09; 1.show&#xff0c;indicate&#xff0c;find 认为&#xff0c;表明 2.improve,promote,boost,enhance,increase&#xff0c;advocate&#xff0c;strength 改善&#xff0c;提升&#xff0c;促进&#xff0c;增强&#xff0…...

ASCII 与 Unicode:两种字符编码的定义和不同

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Java 文章目录 &#x1f4af;前言&#x1f4af;一、ASCII编码详解1.1 ASCII的组成1.2 ASCII的局限性 &#x1f4af;二、Unicode编码详解2.1 Unicode编码方式2.2 Unicode的字符范围 &#x1f4af;三、ASCII与Unicode的…...

Linux相关概念和易错知识点(28)(线程控制、Linux下线程的底层)

目录 1.线程控制 &#xff08;1&#xff09;pthread和thread库 &#xff08;2&#xff09;线程的创建、等待和分离 ①线程创建 ②线程等待 ③线程分离 ④线程替换&#xff08;不可行&#xff09; &#xff08;3&#xff09;线程的终止和取消 ①线程终止 ②线程取消 2…...

lighten() 函数被弃用:替代方案color.scale()或者color.adjust()

在 SCSS (Sass 的一个语法) 中&#xff0c;lighten() 函数用于调整颜色的亮度。然而&#xff0c;随着 Sass 语言的不断发展&#xff0c;一些旧函数被标记为弃用&#xff0c;以鼓励使用更现代、更灵活的 API。lighten() 函数就是其中之一。 1. 弃用通知 当您看到 lighten() is…...

【leetcode】双指针:有效三角形的个数 and 和为s的两个数

文章目录 1. 有效三角形的个数1.题目2.讲解算法原理3.代码 2.和为s的两个数1.题目2.思路3.代码 1. 有效三角形的个数 1.题目 示例1解析&#xff1a; 2.讲解算法原理 3.代码 class Solution { public:int triangleNumber(vector<int>& nums) {sort(nums.begin(), …...

IDEA通过Contince接入Deepseek

Deepseek 的出色表现&#xff0c;上期【Deepseek得两种访问方式与本地部署】 安装Continue插件 第一步、下载插件 在编辑栏【File】->设置【Settiings】或快捷键【CtrlAltS】,弹窗的左侧导航树&#xff0c;选择【plugins】,在marketplace 搜索【Continue】&#xff0c;点…...

grep如何排除多个目录?

在使用 grep 进行文本搜索时&#xff0c;有时候需要排除多个目录&#xff0c;避免在这些目录下进行搜索。下面介绍几种不同的实现方式。 目录 1.使用 -r 和 --exclude-dir 选项&#xff08;GNU grep&#xff09; 2.使用扩展正则表达式和 -P 选项&#xff08;GNU grep&#x…...

Elasticsearch 数据建模:从原理到实战的降维打击指南

Elasticsearch 数据建模&#xff1a;从原理到实战的降维打击指南 &#x1f680; 第一章 数据建模的物理法则&#xff1a;倒排索引的奇妙世界 1.1 倒排索引&#xff1a;比字典更聪明的数据结构 当你在ES中存入"Hello World"时&#xff0c;背后发生了这些魔法&#…...

python defaultdict用法

摘要 使用 defaultdict 可以简化处理字典中缺失键的情况。以下是几个使用 defaultdict 的示例&#xff0c;展示了它在不同场景下的应用。 示例 1&#xff1a;分组文件 假设我们有一组文件名&#xff0c;想要根据文件扩展名将它们分组。我们可以使用 defaultdict 来实现这一点…...

Java 与设计模式(15):模板方法模式

一、定义 模板方法模式是一种行为设计模式&#xff0c;它定义了一个操作中的算法的骨架&#xff08;也就是大致的步骤和流程&#xff09;&#xff0c;而将一些具体步骤的实现延迟到子类中。这样&#xff0c;子类可以不改变算法的结构即可重新定义算法的某些特定步骤。 二、Ja…...

ubuntu更新失败:apt-get install -f Transaction failed: 软件包系统已损坏

检查您是否使用了第三方源。如果是就禁用它们&#xff0c;它们常常导致问题。 然后在终端中运行以下命令&#xff1a;apt-get install -f Transaction failed: 软件包系统已损坏下列软件包未满足的依赖关系&#xff1a;sunloginclient: Depends: libappindicator3-1 但是 %%s 没…...

16-使用QtChart创建动态图表:入门指南

QtChart是Qt框架中的一个强大模块&#xff0c;用于创建各种类型的图表&#xff0c;如折线图、柱状图、饼图等。它提供了丰富的API和灵活的配置选项&#xff0c;使得开发者能够轻松地将数据可视化集成到应用程序中。本文将介绍如何使用QtChart创建一个简单的动态折线图&#xff…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...