C++的static用法总结和代码示例

static用法
  • 修饰普通变量:static关键字可用于修改普通变量的存储区域和生命周期,使其存储在静态区,在程序运行前就分配了空间。如果有初始值,将使用初始值进行初始化,否则系统会用默认值初始化它。
  • 修饰普通函数:static关键字可用于限制函数的作用范围,使其仅在定义该函数的文件内可用。这有助于防止在多人协作项目中与其他命名空间中的函数重名。
  • 修饰成员变量:在类中,static关键字可用于修饰成员变量,使得所有的类对象只保存一个该变量的副本,而且不需要生成对象就可以访问该成员。
  • 修饰成员函数:static关键字可用于修饰成员函数,使得不需要生成对象就可以访问该函数。但需要注意,在静态函数内部不能访问非静态成员,因为它没有类对象的上下文。
代码示例:
#include <iostream>// 示例1:静态局部变量
void countCalls() {// 静态局部变量,只在第一次调用时初始化,之后保持持久性static int count = 0;count++;std::cout << "Function has been called " << count << " times." << std::endl;
}// 示例2:静态全局变量
static int globalVar = 42;// 示例3:静态成员变量和静态成员函数
class MyClass {
public:static int staticVar;  // 静态成员变量static void staticFunction() {std::cout << "This is a static member function." << std::endl;}
};int MyClass::staticVar = 0;  // 初始化静态成员变量int main() {// 示例1:静态局部变量countCalls();countCalls();countCalls();// 示例2:静态全局变量std::cout << "Global variable: " << globalVar << std::endl;// 示例3:静态成员变量和静态成员函数MyClass obj1;MyClass obj2;obj1.staticVar = 1;obj2.staticVar = 3;std::cout << "obj1.staticVar: " << obj1.staticVar << std::endl;std::cout << "obj2.staticVar: " << obj2.staticVar << std::endl;// 静态成员变量可通过类名直接访问std::cout << "MyClass::staticVar: " << MyClass::staticVar << std::endl;// 调用静态成员函数MyClass::staticFunction();return 0;
}
输出结果:
Function has been called 1 times.
Function has been called 2 times.
Function has been called 3 times.
Global variable: 42
obj1.staticVar: 3
obj2.staticVar: 3
MyClass::staticVar: 3
This is a static member function.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】选择排序

1、排序逻辑 选择排序逻辑&#xff1a;对数组中的数据&#xff0c;先假定一个最小的数据下标&#xff0c;然后进行循环寻找到最小数据的下标&#xff0c;放在第一层循环的最初始位置 例&#xff1a; 从0 ~ N-1 寻找到最小值&#xff0c;放在0位置 从1~N-1 寻找到最小值 &…

自定义IDEA代码补全插件

目标&#xff1a; 对于项目中的静态方法&#xff08;主要是各种工具类里的静态方法&#xff09;&#xff0c;可以在输入方法名时直接提示相关的静态方法&#xff0c;选中后自动补全代码&#xff0c;并导入静态类。 设计&#xff1a; 初步构想&#xff0c;用户选择要导入的文…

SearchWP WordPress高级网站内容搜索插件

点击阅读SearchWP WordPress高级网站内容搜索插件原文 SearchWP WordPress高级网站内容搜索插件是一个非常强大的工具&#xff0c;可以显着增强您网站的搜索功能。通过向网站访问者提供高度相关和精确的搜索结果&#xff0c;它可以有效地简化他们的搜索过程&#xff0c;促进发…

CentOS 8离线安装telnet

下载telnet rpm安装包&#xff0c;可从https://www.rpmfind.net/linux/rpm2html/search.php?querytelnet&submitSearch…&systemcentos&arch 根据自己的操作系统下载对应的包&#xff0c;这里以CentOS8为例,分别下载如下的rtp包 xinetd-2.3.15-24.el8.x86_64.rpm…

设计师必备的Figma可视化组件库资产已更新至 7.0版本

在当今数字化时代&#xff0c;数据量呈爆炸式增长&#xff0c;大屏可视化的主要程度越来越高&#xff0c;而大屏背后的设计师们面对的挑战也越来越多&#xff0c;其中之一就是大屏可视化设计项目中的重复性元素设计。这一过程不仅耗费时间&#xff0c;还明显降低了设计团队的生…

Qt6.5类库详解:QLineEdit

哈喽大家好&#xff0c;我是20YC小二&#xff01;欢迎关注(20YC编程)&#xff0c;现在有免费《C程序员》视频教程下载哦&#xff01; ~下面开始今天的分享内容~ 1. QLineEdit介绍 QLineEdit是一个单行文本编辑器&#xff0c;允许用户输入和编辑纯文本。它提供了许多有用的编辑…

周记 从现在开始

每周笔记 2023&#xff1a;12.11 早上&#xff1a; ​ 全是课 下午&#xff1a; ​ 全是课 晚上&#xff1a; ​ 全是课 什么也没学 2023&#xff1a;12.12 早上&#xff1a; ​ 全是课 下午&#xff1a; ​ 全是课 晚上&#xff1a; ​ 全是课 什么也没学 20…

SSH的交互原理(wireshark的分析)

SSH的交换原理&#xff08;wireshark篇&#xff09; 首先要想了解ssh的交换原理&#xff0c;必须要先了解他的加密方式&#xff0c;他的加密方式是对称加密&#xff0c;和公钥加密。什么意思呢&#xff1f; 首先我们向服务器发送一个请求&#xff0c;然后服务器会发给我们他的…

GitBook安装及使用——使用 Markdown 创建你自己的博客网站和电子书

目录 前言一、依赖环境二、gitbook安装使用1.安装 gitbook-cli2.安装 gitbook3.Gitbook初始化4.创建你的文章5.修改 SUMMARY.md 和 README.md6.编译生成静态网页7.运行以便在浏览器预览8.运行效果 前言 GitBook是一个命令行工具&#xff0c;用于使用 Markdown 构建漂亮的博客网…

SSE(服务器推送事件)规范

SSE 是指 "Server-Sent Events"&#xff0c;即服务器推送事件。它是一种基于 HTTP 的服务器推送技术&#xff0c;允许服务器实时向客户端推送数据。SSE 规范定义了一种在客户端和服务器之间单向实时通信的方式&#xff0c;通常用于实现服务器向客户端推送更新、通知或…

【matlab】MATLAB常用内置函数示例

目录: 数值计算函数 1.1 abs函数 1.2 sin、cos、tan函数 1.3 exp、log函数 1.4 sqrt函数 1.5 sum、prod函数 矩阵和向量操作函数 2.1 size函数 2.2 reshape函数 2.3 repmat函数 2.4 eye函数 2.5 rand、randn函数 绘图函数 3.1 plot函数 3.2 scatter函数 3.3 bar函数 3.4 hist函…

面试题总结(十四)【系统移植】【华清远见西安中心】

你用过哪些Bootloader&#xff1f;有什么区别&#xff1f; 作为一个AI助手&#xff0c;我没有直接使用过Bootloader。但我可以为您提供一些关于常见Bootloader的信息和他们之间的区别。 1. GRUB (GRand Unified Bootloader)&#xff1a;GRUB是一个功能强大且广泛使用的Bootload…

【鉴权】JWT加密

目录 定义 官网 定义 JWT是JSON Web Token的缩写&#xff0c;是RFC7519规范。该规范目的是为了让客户端和服务端可靠的传递信息。 官网 JSON Web Tokens - jwt.io JWT是由三个部分组成&#xff0c;HMACSHA256( base64UrlEncode(header) "." base64UrlEncode(pa…

rk3568 MDIO总线

rk3568 MDIO总线 MDIO(Management Data Input/Output)是一种管理数据输入/输出协议,用于在以太网交换机和PHY(物理层收发器)之间进行通信。在网络设备中,MDIO总线用于控制网络接口的PHY芯片,例如通过MDIO总线访问PHY芯片的寄存器。这些寄存器包含了一些关于网络连接状态…

AWS 知识二:AWS同一个VPC下的ubuntu实例通过ldapsearch命令查询目录用户信息

前言&#xff1a; 前提&#xff1a;需要完成我的AWS 知识一创建一个成功运行的目录。 主要两个重要&#xff1a;1.本地windows如何通过SSH的方式连接到Ubuntu实例 2.ldapsearch命令的构成 一 &#xff0c;启动一个新的Ubuntu实例 1.创建一个ubuntu实例 具体创建实例步骤我就不…

vue el-date-picker中datetime类型对今天之后的日期包含时分禁用

vue el-date-picker中datetime类型对今天之后的日期包含时分禁用 目前对选择秒那一列未禁用 <template><div><el-date-pickerv-model"deactivateTime"type"datetime"format"yyyy-MM-dd HH:mm:ss"value-format"yyyy-MM-dd HH…

抖音直播间websocket礼物和弹幕消息推送可能出现重复的情况,解决办法

在抖音直播间里&#xff0c;通过websocket收到的礼物消息数据格式如下&#xff1a; {common: {method: WebcastGiftMessage,msgId: 7283420150152942632,roomId: 7283413007005207308,createTime: 1695803662805,isShowMsg: True,describe: 莎***:送给主播 1个入团卡,priority…

HarmonyOS4.0从零开始的开发教程17给您的应用添加通知

HarmonyOS&#xff08;十五&#xff09;给您的应用添加通知 通知介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应…

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜A/B

老规矩&#xff0c;看目录&#xff0c;平均3-5题 文章目录 A/B2023真题&#xff08;2023-19&#xff09;-A-选项特点&#xff1a;两个等号&#xff1b;-纯蒙猜-哪个长选哪个【不要用这招&#xff0c;因为两个选项&#xff0c;总会有一个长的&#xff0c;那不就大多都是A/B&…

git log实用指令

gi查看提交历史 在提交了若干更新&#xff0c;又或者克隆了某个项目之后&#xff0c;你也许想回顾下提交历史。 完成这个任务最简单而又有效的工具是 git log 命令 当你在此项目中运行 git log 命令时&#xff0c;可以看到下面的输出&#xff1a; $ git log commit ca82a6df…