首页 > 其他分享 >第2讲:static用法总结

第2讲:static用法总结

时间:2024-05-31 17:33:38浏览次数:26  
标签:总结 函数 静态 成员 用法 对象 static 变量

几句话总结 static 的用法。

1、静态变量

(1)静态变量统一放在特定内存区域中,在程序的整个生命周期内只有一份,所以函数在使用时共用静态变量的状态

(2)类中的静态变量为类的所有对象共享,而且不能在类内初始化静态变量。原因:每个对象是独立的,如果可以通过对象的方式初始化静态变量,这样就代表每个对象都有一个静态变量了,这和静态变量在整个程序周期内只有一份是违背的!

正确做法是:

  • 类内声明静态变量 static int i ,在类外定义 int Apple::i = 0
  • 只能用类名而不能用对象名定义: Apple::i 是正确的而 obj.i 是错误的;
  • 不能在主函数中定义!写在 main() 中,只能写在外层进行定义!!

(3)static可以用于限定访问范围。静态变量只在当前文件有效,即便在其他文件中进行了 extern 声明都无法使用该变量。

2、静态成员

(1)静态对象是在主函数之后被销毁的。

(2)类中的静态函数和类中的静态变量一样,由类的对象共享。虽然可以使用 obj.func() 的方式来调用静态成员函数,但还是建议使用 Apple::func() 来调用。

(3)静态成员函数仅允许直接访问静态数据成员或其他静态成员函数,无法访问类的非静态数据或函数。原因:静态成员函数的参数列表没有隐式this指针,导致没法通过 this->var 的方式访问类内的成员;而静态变量和函数的存储空间在堆中,所以这部分数据是可以直接访问的。

标签:总结,函数,静态,成员,用法,对象,static,变量
From: https://www.cnblogs.com/7ytr5/p/18224963

相关文章

  • 论文总结:Grasp-Anything: Large-scale Grasp Dataset from Foundation Models
    目录一、论文摘要二、Grasp-Anything数据集A.场景生成B.抓取姿势标注​编辑C.Grasp-Anything统计D.Grasp-Anything对社区的帮助三、实验A.零样本抓取检测B.机器人评估C.野外抓取检测D.讨论四、总结论文:https://arxiv.org/pdf/2309.09818v1代码:https://......
  • 山东大学项目实训-基于LLM的中文法律文书生成系统- 中期总结
    本次创新项目实训自三月开始,在今天中期检查之后对项目工作进行了回顾,下文对这段工作作简要总结。项目选题其实我是比较犹豫,因为LLM此前的了解只有ChatGPT这种基本成熟的模型,而且也只是简单调用,对源码,接口的使用基本是未知,以我对其他成员的了解,基本也大差不差。因此项目前景堪忧。......
  • 关于Nginx 的 location 匹配规则总结
    Nginx版本:1.18.0location匹配的变量Nginx的location规则匹配的变量是 $uri,所以不用管后面的参数 $query_string (或者 $args)location匹配的种类格式主要是这个:location[空格|=|~|~*|^~|@]/uri/{...}其实上面分为三部分:最前面的字符(l......
  • **static assertion failed:no q_object in the class with the signal**
    staticassertionfailed:noq_objectintheclasswiththesignal这个问题主要是由于未添加Q_OBJECT,找不到信号定义如图所示,正是由于未点击Add下面的选项,即使在后续手动添加Q_OBJECT也会报错解决的方法可以在原先的情况下进行添加新的文件(这里我是定义了Student2,Tea......
  • 北京中冶赛迪面试总结
    自我介绍+项目介绍目录1.介绍一下mysql中的索引?2.在MySQL中,如果您有一个(a,b,c)的联合索引,查询条件仅包含a和c而没有b索引的生效情况?3.mysql锁的类型?4.表中的数据重复删除怎么实现?方法1:使用子查询方法2:使用JOIN方法3:使用ROW_NUMBER()5.HashMap的遍历方式?......
  • 设计模式:全网最全(23+10种)、最易懂(对比代码)、最简洁(三言两语)、最深度(带点评)的
    前言设计模式是软件开发中的重要工具,灵活掌握大量的设计模式,能够帮助我们编写更灵活、可维护和可扩展的代码。网上有许多关于设计模式的文章,往往把设计模式介绍得高深莫测,墨守成规。于是,不久前萌发了写一篇简单易懂的设计模式介绍的文章的想法。在开始之前,我想强调切勿滥......
  • 鹅厂硬核的 【防御性编程实践】总结
    防御性编程,就是通过技术手段,把错误扼杀在萌芽阶段,或者把错误直观的暴露给开发者快速修复错误继续聚焦于业务。七年前,我们开始在项目中践行了全面的防御性编程,从多年的坚持下来看,稇载而归。今天翻出了以前总结的一篇文章,内容感觉还挺硬核的,很多做法非常有效,并且可以照搬,于是发出......
  • 长序列中Transformers的高级注意力机制总结
    在处理长序列时,Transformers面临着注意力分散和噪音增加等挑战。随着序列长度的增长,每个词元必须与更多词元竞争注意力得分,这会导致注意力分数被稀释。这种稀释可能导致不那么集中和相关的上下文表示,特别是影响彼此距离较远的词元。并且较长的序列更有可能包含不相关或不太相关的......
  • 2024.5 总结
    动态规划【YBOJ】序列立方题目描述给出一个包含\(n\)个数的序列\(a\),求所有不同的子序列的出现次数的立方和,\(1\len\le250\)。解题思路枚举出现过的子序列时间复杂度会直接爆炸,考虑\(dp\)。将此问题转换成组合问题,我们每次选位置不同的\(3\)个子序列,求有多少种......
  • 【C++】初始化列表、隐式转换、static成员、友元与匿名对象
    文章目录1.初始化列表2.explicit关键字2.1隐式类型转换2.2explicit3.static成员3.1成员变量3.2成员函数4.友元4.1友元函数4.2友元类5.内部类6.匿名对象1.初始化列表在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。classDate{publ......