一文带你深入了解静态成员变量/函数 在类中的应用
深入了解静态成员变量/函数在类中的应用文章目录深入了解静态成员变量/函数在类中的应用你的笔记核心内容解析与补充1. static 修饰成员变量2. static 修饰成员函数核心概念串联为什么静态成员有这样的特性从内存角度理解从时间角度理解从指针角度理解静态成员的访问方式静态成员的应用场景总结总结看完了你提供的笔记这是关于C中static 关键字在类中应用的总结。你的笔记结构很清晰把 static 对成员变量和成员函数的影响分别列了出来。我来帮你系统地梳理和串联一下让这些知识点之间的逻辑关系更完整。你的笔记核心内容解析与补充1. static 修饰成员变量你的笔记要点详细解释必须在类外进行初始化静态成员变量属于类不属于某个对象因此不能在构造函数中初始化。必须在类外单独定义和初始化。初始化是最先完成的静态成员在程序启动时main函数执行前就被初始化生命周期贯穿整个程序。被所有类的对象共享无论创建多少个对象所有对象都访问同一份静态成员变量。不属于某个对象不受sizeof影响sizeof(类)计算的是每个对象特有的成员大小不包括静态成员。代码示例classMyClass{public:staticintstaticVal;// 类内声明intnormalVal;MyClass(intval):normalVal(val){}};// 类外定义和初始化intMyClass::staticVal100;intmain(){coutsizeof(MyClass)endl;// 输出4只计算normalValstaticVal不算MyClassobj1(1);MyClassobj2(2);obj1.staticVal200;// 修改静态成员coutobj2.staticValendl;// 输出200所有对象共享同一份return0;}2. static 修饰成员函数你的笔记要点详细解释没有this指针静态成员函数不与任何具体对象绑定因此没有this指针。只能访问静态成员变量因为没有this指针无法访问属于具体对象的非静态成员。不能是虚函数虚函数的调用依赖this指针和虚函数表静态函数没有this因此不能是虚函数。代码示例classMyClass{private:staticintstaticVal;intnormalVal;public:MyClass(intval):normalVal(val){}// 静态成员函数staticvoidstaticFunc(){coutstaticValendl;// ✅ 可以访问静态成员// cout normalVal endl; // ❌ 错误不能访问非静态成员}// 普通成员函数voidnormalFunc(){coutstaticValendl;// ✅ 普通函数可以访问静态成员coutnormalValendl;// ✅ 也可以访问非静态成员}// virtual static void virtStatic() { } // ❌ 错误静态函数不能是虚函数};intMyClass::staticVal100;核心概念串联为什么静态成员有这样的特性这些特性都源于一个根本原因静态成员属于类不属于对象。从内存角度理解// 内存布局示意// 静态存储区程序启动时分配程序结束时释放staticintMyClass::staticVal;// 只有一份独立存在// 堆/栈对象创建时分配对象销毁时释放MyClass obj1:[normalVal]// 每个对象有自己的normalValMyClass obj2:[normalVal]// 互不干扰从时间角度理解// 初始化顺序静态成员初始化 → main函数开始 → 创建对象 → 对象使用 → 对象销毁 → 程序结束 → 静态成员销毁// 静态成员比任何对象都早出生比任何对象都晚死亡从指针角度理解classMyClass{public:voidnormalFunc(){// 编译器隐含地传递了this指针// 实际上被转换为: void normalFunc(MyClass* this)}staticvoidstaticFunc(){// 没有this指针不知道是哪个对象的上下文}};静态成员的访问方式静态成员可以通过两种方式访问classMyClass{public:staticintval;staticvoidfunc(){coutstatic funcendl;}};intMyClass::val10;intmain(){// 1. 通过类名访问推荐清晰表明是静态成员coutMyClass::valendl;MyClass::func();// 2. 通过对象访问虽然可以但不推荐容易混淆MyClass obj;coutobj.valendl;// 可以但看起来像普通成员obj.func();// 可以但静态函数本不需要对象return0;}静态成员的应用场景场景示例计数器统计创建了多少个对象单例模式保存类的唯一实例工具函数与类相关但不需要对象状态的函数如数学计算共享配置所有对象共享的配置参数工厂方法创建并返回类对象计数器示例classStudent{private:staticintcount;// 学生总数string name;public:Student(string n):name(n){count;// 每创建一个学生总数加1}~Student(){count--;// 学生销毁总数减1}staticintgetCount(){returncount;// 静态函数返回静态成员}};intStudent::count0;// 初始化为0intmain(){coutStudent::getCount()endl;// 0Students1(张三);Students2(李四);coutStudent::getCount()endl;// 2{Students3(王五);coutStudent::getCount()endl;// 3}// s3被销毁coutStudent::getCount()endl;// 2return0;}总结特性静态成员变量静态成员函数归属属于类属于类内存位置静态存储区代码区初始化类外初始化-this指针-无访问非静态成员-❌ 不能访问静态成员✅ 能✅ 能虚函数-❌ 不能调用方式类名::成员 或 对象.成员类名::成员 或 对象.成员你的笔记很准确地抓住了静态成员的核心特征它们是属于类的而不是属于某个对象的。理解这一点就能理解为什么静态成员有这些看似特殊的规则。总结这篇文章是作者搜集大量面经和资料这里出来的。感谢你的支持作者wkm是一名中国矿业大学(北京) 大一的新生希望得到你的关注如果可以的话记得一键三联

相关新闻

北京高端购物中心/商场美陈设计优选榜:3家创意公司力荐

北京高端购物中心/商场美陈设计优选榜:3家创意公司力荐

当一座建筑开始讲述故事,城市便拥有了温度。岁末年初的北京,从三里屯太古里北区的艺术雕塑与品牌独栋交相辉映,到斯普瑞斯奥莱的“雪境极光”主题装置,再到西单大悦城焕新后的双首层视觉界面,这些看似不经意的“打卡点…

2026/7/5 0:03:08 阅读更多 →
政府信息公开监督保障方案怎么写,有哪些内容

政府信息公开监督保障方案怎么写,有哪些内容

一份完整的政府信息公开监督保障方案,是确保政务公开工作“有人抓、有人管、有标准、有交代”的制度设计。编写时应遵循《中华人民共和国政府信息公开条例》,结合单位实际,构建从“源头审查”到“末端问责”的闭环。以下是方案的核心结构与主…

2026/7/3 18:28:37 阅读更多 →
跨行转岗网络安全有多香?薪资翻倍!45天逆袭9K+

跨行转岗网络安全有多香?薪资翻倍!45天逆袭9K+

跨行转岗网络安全有多香?薪资翻倍!45天逆袭9K ! 为什么网络安全是跨行转岗的“真香”选择? **一、风口之上,需求旺盛:**数字化转型提速,网络安全事件频发。我国网络安全人才缺口庞大&#xff…

2026/7/4 16:38:35 阅读更多 →

最新新闻

数据产业服务分类(31)——数据产业——数字技术与数据技术

数据产业服务分类(31)——数据产业——数字技术与数据技术

数字技术与数据技术是紧密相关且各有侧重的领域,数字技术为数据处理和应用提供支撑,数据技术则专注于数据全生命周期的管理与价值挖掘,二者协同推动数字经济创新发展。数字技术与数据技术的定义数字技术是指利用电子计算机、互联网、大数据、…

2026/7/5 14:20:19 阅读更多 →
数据产业服务分类(30)——数据产业——数字经济核心产业与数据产业

数据产业服务分类(30)——数据产业——数字经济核心产业与数据产业

数字经济核心产业包括数字产品制造业、数字产品服务业、数字技术应用业、数字要素驱动业。数字经济核心产业与数据产业是紧密交织、相互促进的关系,数据产业是数字经济重要支撑,而数字经济核心产业为数据产业提供发展动力,二者协同推动数字经…

2026/7/5 14:20:19 阅读更多 →
OpenCV中的「SVM分类器」:从理论到实战,手把手教你构建图像分类模型

OpenCV中的「SVM分类器」:从理论到实战,手把手教你构建图像分类模型

1. SVM分类器基础:从几何原理到OpenCV实现第一次接触SVM时,我被它优雅的数学原理深深吸引。想象你面前有一堆红蓝两色的积木,需要画一条线把它们分开——SVM就是在多维空间里做这件事,而且还要找到"最公平"的那条分界线…

2026/7/5 14:20:19 阅读更多 →
B. Good times Good times(Codeforces 2241)

B. Good times Good times(Codeforces 2241)

B. Good times Good times 题解题意简述 一个整数被称为 good&#xff0c;当且仅当它的十进制表示中 最多只含两种不同数字。 给定一个已经保证为 good 的整数 x&#xff0c;要求构造一个整数 y&#xff0c;满足&#xff1a; 2 < y < 10^9y 是 goodx * y 也是 good 如果有…

2026/7/5 14:20:19 阅读更多 →
PIC18F4680与DC-DC降压转换器的数字电源管理方案

PIC18F4680与DC-DC降压转换器的数字电源管理方案

1. 项目背景与核心需求解析在嵌入式系统开发中&#xff0c;电源管理一直是硬件设计的核心挑战之一。当我们使用PIC18F4680这类微控制器构建系统时&#xff0c;往往需要为不同模块提供多种电压等级的稳定电源。传统的线性稳压器虽然简单&#xff0c;但在大电流或输入输出电压差较…

2026/7/5 14:18:19 阅读更多 →
土木工程人必备的计算工具箱,免费无广告,大幅提升工作效率

土木工程人必备的计算工具箱,免费无广告,大幅提升工作效率

前段时间有个做土木工程的兄弟跟我吐槽&#xff0c;说他们做施工方案的时候&#xff0c;要计算各种参数&#xff0c;以前都是手工算或者用Excel&#xff0c;费时费力还容易出错。后来他们公司买了个专业软件&#xff0c;要好几万&#xff0c;而且很多功能用不上&#xff0c;感觉…

2026/7/5 14:18:19 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻