static的了解

【关键字】static 使用总结_c++ static关键字-CSDN博客

本文来自上面的文章,这里用于学习,谢谢大佬的分享!!!

非原创!!!

1.一个项目中创建main.cpp和demo.cpp

(1)main.cpp和demo.cpp中都写入:

void func(){
cout<<"hello"<<endl;
}

编译报错 

(2)在一个文件中定义函数,在另一个文件中引入该函数的声明。

main.cpp

void func(){
cout<<"hello"<<endl;
}

demo.cpp

extern void func();

 可以!

(3)只希望func()函数在main.cpp中使用,不可以被demo.cpp使用。

main.cpp

static void func(){
cout<<"hello"<<endl;
}

添加static关键字,此时函数为静态函数,作用域由之前的整个项目内的文件变为只能在本文件内访问。                                                                                                                                                

此时可以在demo.cpp中定义同名函数func(),因为作用域不同,互不影响。

2.在全局变量前添加static

作用域缩小为只能在本文件中访问,生命周期不变。

全局变量在外部文件中可以使用extern访问,但全局静态变量在外部不可访问。

3.局部变量前添加static

局部变量生命周期变为与全局变量一致,随进程一起结束,作用域不变。

4.类的静态成员变量

该静态变量只能在类内部定义,外部声明。

class A
{
public:static int n;
};// 类的静态成员变量只能在类外部定义(类外部定义时不能加static关键字),类内部声明
int A::n = 10;int main()
{// 1、通过示例对象访问静态成员变量A a;cout << a.n << endl;// 输出10// 2、因为类的静态成员变量是所有该类的对象所共享的//    所以也可以通过类名直接访问cout << A::n <<endl;// 输出10return 0;
}

静态成员变量必须设初值,否则编译失败。

私有(保护)静态成员变量不可通过类名::变量名访问

5.类的静态成员函数

函数内部只能访问类的静态成员。

(1)类内部,外部都可以定义类的静态成员函数

class A{
public:
static void try()
{
cout<<"hello"<<endl;
}
}
class A{
public:
static void try();
}
void A::try()
{
cout<<"hello"<<endl;
}

   (2)静态成员函数没有this指针,不可访问非静态成员。

   (3)static成员函数不能被virtual修饰。                                                                                           

虚函数的实现是为每一个对象分配一个vptr指针,vptr通过this指针来调用。

虚函数调用关系:this->vptr--->ctable--->virtual function

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

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

相关文章

FL Studio2025中文最新版本专业编曲软件有哪些新功能?

FL Studio 21&#xff0c;也被音乐制作爱好者亲切地称为“水果编曲软件”&#xff0c;是比利时的Image-Line公司研发的一款完整的音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;。自从1990年代推出以来&#xff0c;FL Studio 以其直观的用户界面、丰富的插件支持和强…

Rust分割字符串的常见操作方法

在Rust编程语言中&#xff0c;分割字符串是一个常见的操作&#xff0c;可以通过多种方式实现。以下是一些常用的方法&#xff1a; 使用split方法&#xff1a; split方法可以按照指定的字符或字符序列来分割字符串。它返回一个迭代器&#xff0c;可以迭代分割后的字符串片段。 l…

玩机社区 - 2024年最美社区源码开源

玩机社区 - 2024年最美社区源码开源 教程源码文档都内置到压缩包了 https://pan.baidu.com/s/1xwcscTne-JMbmKEntiuAuA?pwd78oi

逻辑分析仪 - 采样率/采样深度

采样深度&#xff08;Sampling Depth&#xff09; 采样深度指的是逻辑分析仪在一次捕获过程中可以记录的最大样本数量。简单来说&#xff0c;采样深度越大&#xff0c;逻辑分析仪可以记录的数据量就越多。这对于分析长时间的信号变化或复杂的信号序列非常重要。 采样率&#…

2024年5月23日 (周四) 叶子游戏新闻

《Unclogged》Steam页面上线 马桶主题恐怖逃脱解谜Brody制作并发行&#xff0c;一款奇葩创意马桶主题恐怖逃脱解谜新游《Unclogged》Steam页面上线&#xff0c;本作暂不支持中文。 Meta人工智能主管杨立昆 大语言模型不会达到人类智能水平IT之家今日&#xff08;5月23日&#x…

QEMU启动Linux内核

在QEMU环境下启动linux内核命令如下&#xff1a; QEMU_AUDIO_DRVnone qemu-system-arm -m 256M -nographic -M versatilepb -kernel /home/yukeyang/myfile/linux-6.6.30/arch/arm/boot/zImage -append "consolettyAMA0 rdinit/bin/sh" -dtb arch/arm/boot/dts/arm/…

数据防泄漏系统哪个好用,给文件加密的软件

数据防泄露&#xff08;Data Leakage Prevention&#xff0c;DLP&#xff09;是指通过一定的技术手段&#xff0c;防止组织指定&#xff08;重要或敏感的&#xff09;数据或信息资产以违反安全策略规定的形式流出组织的一种策略。 信息防泄露以文档加密技术为核心&#xff0c;…

顺序表及其应用

掌握顺序表的初始化&#xff0c;初始化、查找、插入、删除、遍历、查看实际长度等操作 内容 从键盘输入n个整数&#xff0c;创建顺序表。【创建长度为n的顺序表】从键盘输入1个整数x&#xff0c;在顺序表中查找x所在的位置。若找到&#xff0c;输出该元素所在的位置(即数组下标…

SQL开窗函数

文章目录 概念&#xff1a;语法&#xff1a;常用的窗口函数及示例&#xff1a;求平均值&#xff1a;AVG() &#xff1a;求和&#xff1a;SUM():求排名&#xff1a;移动平均计数COUNT():求最大MXA()/小MIN()值求分区内的最大/最小值求当前行的前/后一个值 概念&#xff1a; 开窗…

同旺科技 FLUKE ADPT 隔离版发布 ---- 说明书

所需设备&#xff1a; 1、FLUKE ADPT 隔离版 内附链接&#xff1b; 应用于&#xff1a;福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于&#xff1a;福禄克Fluke 15B / 17B / 18B

利用文本图像对比模型进行虚假信息检测

Harnessing the Power of Text-image Contrastive Models for Automatic Detection of Online Misinformation 论文地址: CVPR 2023 Open Access Repositoryhttps://openaccess.thecvf.com/content/CVPR2023W/WMF/html/Chen_Harnessing_the_Power_of_Text-Image_Contrastive_…

51单片机学习(4)3-1 独立按键控制LED亮灭

#include<REGX52.H> void main() { //P20xFE; P2_01; while(1) { if(P3_10) { P2_00&#xff1b; } else { P2_01&#xff1b; } } }

力扣周赛398题解

特殊数组Ⅰ 如果数组的每一对相邻元素都是两个奇偶性不同的数字&#xff0c;则该数组被认为是一个 特殊数组 。 Aging 有一个整数数组 nums。如果 nums 是一个 特殊数组 &#xff0c;返回 true&#xff0c;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;nums [1] …

SEO:屏蔽流氓蜘蛛抓取

解决屏蔽流氓蜘蛛抓取&#xff0c;如MJ12bot 、DotBot 、BLEXBot 、PetalBot 、DataForSeoBot 1、robots文件屏蔽 User-agent: MJ12bot Disallow: / User-agent:DotBot Disallow: / User-agent:BLEXBot Disallow: / User-agent:PetalBot Disallow: / User-agent:DataForSeoBot…

【C++】<知识点> 标准和文件的输入输出

目录 一、输入输出操作 1. 相关的类 2. 标准流对象 3. istream类的成员函数 二、流操纵算子 1. 整数流的基数 2. 浮点数精度的流操纵算子 3. 域宽的流操纵算子 4. 其他的流操纵算子 5. 用户自定义流操纵算子 三、文件读写 1. 文本文件的读写 2. 二进制文件的读写 3. 文件读写…

vue 点击复制文本到剪贴板

一、首先在vue文件的template中定义复制按钮 <div size"small" v-if"item.prop jadeCode" class"cell-container"><span>{{ scope.row.jadeCode }}</span> <button click"handleCopy(scope.row.jadeCode)" clas…

一周开发一个客服工单系统

开发一个客服工单系统在一周内完成&#xff0c;需要详细的计划和高效的执行。以下是一个详细的开发计划&#xff0c;涵盖每天的主要任务和技术栈选择&#xff1a; 演示效果&#xff1a;gofly.v1kf.com 技术栈选择 前端&#xff1a;React.js 或 Vue.js后端&#xff1a;Go (Gin)数…

K8s是如何Watch的?

1. 概述 进入 K8s 的世界&#xff0c;会发现几乎所有对象都被抽象为了资源(Resource)&#xff0c;包括 K8s Core Resources(Pod, Service, Namespace 等)、CRD、APIService 扩展的资源类型。同时 K8s 底层将这些资源统一抽象为了 RESTful 的存储(Storage)&#xff0c;一方面服…

jellyfish安装及使用(Bioinformatics工具-020)

01 背景 基因组survey以测序技术为基础&#xff0c;基于小片段文库的低深度测序&#xff0c;通过K-mer分析&#xff0c;快速获得基因组大小、杂合度、重复序列比例等基本信息&#xff0c;为制定该物种的全基因组de novo测序策略提供有效依据。 jellyfish (水母) 是一个用于快…

Docker-镜像迁移的三种方式=>备份恢复公有仓库私有仓库

制作好的镜像要被别人使用&#xff0c;有三种方式&#xff1a; 1.先备份镜像&#xff0c;别人通过u盘或者其它方式拷贝后&#xff0c;再恢复镜像&#xff0c;这种方式比较麻烦 2.将制作的镜像上传到公共镜像仓库&#xff0c;被别人拉取后使用&#xff0c;但可能存在网络不通畅或…