C/C++程序设计——static关键字

news2024/11/28 3:14:20

一、修饰局部变量

(1)称为静态局部变量,改变局部变量的生命周期,生命周期由局部变为全局。

(2)作用域不发生改变。

(3)静态局部变量只能被初始化一次。

本质:

        改变了局部变量的存储位置:局部变量是存储在栈区,但如果用static修饰局部变量,则编译器在编译期间就会将其分配到全局数据区。

二、修饰全局变量或函数

作用:

        都是限制其只能在本文件内使用,不能跨文件访问(默认可以跨文件访问)。

本质:

        全局变量和函数有外部链接属性,使用static修饰时,就会改变其链接属性为内部链接属性,让其具有文件作用域,即只能在本文件内使用,不能跨文件访问。

例如:

       ① 在dome2中定义的函数和全局变量,在头文件中声明后,就可以在另一个包含该头文件的文件中,进行跨文件访问:

 

 

         ②在dome2中用static修饰,禁止跨文件访问,则dome中就无法再访问:

注意:

        变量声明要加extern关键字,明确告知编译器这是声明,否则可能会被误认为是定义。函数声明也建议加上此关键字。

三、static成员(C++)

1.概念

        声明为static的类成员称之为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。

        静态的成员变量一定要在类外进行初始化(注:在类外定义时不要加static,但要加上类名::)

2.特性

1.静态成员为所有类对象所共享,不属于某个具体的实例;

2.静态成员变量必须在类外定义,定义时不添加static关键字;

3.类静态成员即可用类名::静态成员或者对象.静态成员来访问;

4.静态成员函数没有隐藏的this指针,不能访问任何非静态成员,也不能调用非静态成员函数;

5.静态成员和类的普通成员一样,也有public、protected,private3种访问级别,也可以具有返回值;

6.静态成员变量没有存储在对象中;

7.静态成员函数不能设置为const成员函数(因为这里const本质是在修饰this);

8.静态成员函数不能设置为虚函数。

3.访问方式

(1)对象名.静态成员

(2)类名::静态成员

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

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

相关文章

获取UNIX系统时间

① 基本认识 UNIX系统时间主要分为两种: 日历时间 和 进程时间 ② 日历时间 该时间是自协调时间时间 1970年1月1日 00:00:00这个特定时间来计算累积的秒数。(称为UTC 格林尼治标准时间) 时间值是存放在系统类型time_t里面. ③ 进程时间 也称为…

redis哨兵模式配置(配置文件等)

Redis-Sentinel机制主要用三个功能: (1)监控:不停监控Redis主从节点是否安装预期运行 (2)提醒:如果Redis运行出现问题可以 按照配置文件中的配置项 通知客户端或者集群管理员 (3)自动故障转移:当主节点下线之后,哨兵…

OpenGL 简介

OpenGL 简介 GPU 接口规范 对于刚接触 OpenGL 的初学者,常常会有这样一个疑问: OpenGL 的源码在哪里,如何编译? 然而实际上 OpenGL 并不是一个软件实现,更多的是一个标准协议; OpenGL 更像是一种显卡驱动标准,由各个硬件厂家适配,各个硬件厂商根据 OpenGL 接口规范编撰对应的…

【系统集成项目管理工程师】项目进度管理

💥十大知识领域:项目进度管理 主要考计算题 项目进度管理包括以下 7 个过程: 规划进度管理过程定义活动过程排列活动顺序过程估算活动资源过程估算活动持续时间过程制定进度计划过程控制进度过程 一、规划进度管理过程 制定政策、程序和文档以管理项目进…

亲测:腾讯云轻量应用服务器性能如何?

腾讯云轻量应用服务器性能评测,轻量服务器CPU主频、处理器型号、公网带宽、月流量、Ping值测速、磁盘IO读写及使用限制,轻量应用服务器CPU内存性能和标准型云服务器CVM处于同一水准,所以大家不要担心轻量应用服务器的性能,腾讯云百…

【CSS】13.页面切图和布局实现

页面切图和布局实现 1. 浮动布局 1.1 页面布局 LOGO 部分 NAV 布局 LEFT - SIDEBAR:左边栏布局 CONTENT:内容布局 RIGHT - SIDEBAR:右边栏布局 1.2 流式布局 块的默认布局叫做流式布局 但流式布局并不能满足对页面的需要&#xff0c…

(学习日记)2023.4.10

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

杰林码图像增强算法——超分辨率、图像放大、轮廓和色彩强化算法(二)

一、前言 2023-03-23我发布了基于加权概率模型(杰林码的理论模型)的图像颜色增强和轮廓预测的应用方法。效果还不太明显,于是我又花了2周的时间进行了技术优化。下面仅提供了x86下的BMP和JPG对应的lib和dll,本文中的算法属于我国…

为什么CPU需要时钟

为什么CPU需要时钟 为什么CPU需要时钟这样一个概念? 什么是时钟脉冲,CPU为什么需要时钟,时钟信号是怎么产生的? 上面这个图的方波就是一个脉冲,类比于人类的脉搏跳动。一个脉冲称之为CPU的一个时钟信号,或者时钟脉冲…

Melis4.0[D1s]:6.mango-MQ-R基于Melis移植lvgl

文章目录1.下载lvgl源码到《D1s-Melis/ekernel/drivers/hal/test/disp2》目录1.1 修改Makefile1.2 快速测试Makefile修改是否有效2.移植刷新显示内存函数dummy_flush_cb3.创建一个定时器调用lvgl心跳lv_tick_inc()4.pack打包出错:5.设置开机启动6.源码下载上一篇文章…

《类和对象》(上)

本文主要对类和对象有一个初步的了解。 文章目录前言1、类的引入和定义2、类的访问限定符及封装2.1 访问限定符2.2 封装3 、类的作用域4 、类的实例化5 、类对象的模型5.1 类对象的大小5.2 类对象存储方式6、this 指针6.1 引子6.2 特性6.3 this指针的一个问题前言 C语言是面向过…

【微信小程序】-- 分包 - 独立分包 分包预下载(四十五)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

VRIK+Unity XR Interaction Toolkit 实现VR上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)

文章目录📕第一步:配置 OpenXR XR Interaction Toolkit 的开发环境📕第二步:导入人物模型⭐VRM 模型导入 Unity 的方法📕第三步:配置 VRIK⭐给模型加上 VRIK 组件⭐将模型的头部和手部的位置作为 VR 追踪目…

如何用ChatGPT做设计?激发设计师们的灵感

伴随着人工智能技术的迅猛发展,AI 工具在设计领域中的应用也越来越广泛。 当前,诸如ChatGPT等 AI 工具不仅可以进行自然语言处理,还可以应用于图像、视频等多种媒体领域,为设计师们提供了丰富的应用场景。 使用Chatgpt&#xff1…

开源了,我做了一个基于GPT的桌宠聊天系统:Pet-GPT!

前言 最近chatgpt的热度高居不下。作为一个深度成谜者,发现大部分开发者在调用GPT的时候要不就是基于Tauri做本地窗口外接网页,要不就是web直接展示。在沉思苦想一段时间后,才发现好像没啥什么人用pyqt做啊?特别是没人用桌面宠物…

浏览器:好用的浏览器插件,亲测好用

插件一、CSDN,推荐指数五颗星,强烈推荐 说明:超级好用的浏览器桌面,功能强大,操作简单,效率神器 插件二、AIX智能下载器 说明: 就这么简单的拖放即可实现保存图片,即使观看中的视频…

凌恩生物美文分享|好看又实用,多组学联合分析项目大揭秘!

基因层面的功能潜能有没有真的实现表达,表达量是高是低?下游合成的蛋白质行使了什么样得功能,代谢产物通过体循环到达靶器官,又是如何影响靶器官的工作运行的? 一个完整的生物学故事,中心法则贯穿始终&…

2023十大连锁店进销存软件排名(真实测评)

目前市面上很多连锁店进销存软件的排名都比较主观,结合自己实际工作过程中接触过的软件和在进销存软件多年的经验,给大家整理下2023十大连锁店进销存软件,希望能帮到正在选择连锁店进销存软件的老板! 第一名:秦丝连锁联…

机器学习 | 实验三:逻辑回归和牛顿法

⭐ 对应笔记:牛顿法 📚描述 在本练习中,我们将使用牛顿法对分类问题实现逻辑回归。 📚数据 在本练习中,假设一所高中有一个数据集,该数据集表示40名被大学录取的学生和40名未被录取的学生。 每个(x(i),y…

pandas笔记:offset.DateOffset

进行date的偏移 class pandas.tseries.offsets.DateOffset 1 参数说明 n 偏移量表示的时间段数。 如果没有指定时间模式,则默认为n天。 normalize是否将DateOffset偏移的结果向下舍入到前一天午夜**kwds 添加到偏移量的时间参数 年(years&#xff09…