C++——static成员

【问题】:定义一个类,计算程序中创建了多少个类对象。 

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
//实现一个类,计算程序中创建出了多少个类对象
class A
{
public:A(){m++;n++;}A(const A& a){m++;n++;}~A(){--n;}//静态成员函数:没有this指针static int GetM(){return m;}static int GetN(){return n;}
private://共实现过多少类对象static int m;//现在还在使用的有多少类对象static int n;};//静态成员变量必须在类外定义,定义时不添加static关键字
//声明和定义分离
int A::m = 0;
int A::n = 0;
int main()
{A aa1;A aa2;cout << aa1.GetM() << " " << aa1.GetN() << endl;A();//匿名对象的声明周期只在这一行cout << aa1.GetM() << " " << aa1.GetN() << endl;A aa3(aa1);cout << aa1.GetM() << " " << aa1.GetN() << endl;return 0;
}

结果:

前言:

static静态成员变量为所有类对象所共享,不属于某个具体的实例,其存储也不占具体对象的空间,而是存储在静态存储区。

静态成员的特性:

1.静态类型的成员不给缺省值

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

3.静态成员函数没有隐藏的this指针,不能访问任何非静态成员

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

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

静态成员函数:

如果我们创建的都是匿名对象,如下:

如何统计数量?如下这样?

但是,这样相当于多创建了两个匿名对象,就会使结果不正确。

所以,这里的Get函数使用了static关键字修饰,变成了静态成员函数。静态成员函数没有this指针,也就是不用传this指针过去,所以我们可以这样计算:

这样的结果就是正确的了。 

 

但是静态成员函数因为没有this指针,所以无法访问类中非静态成员变量

如果,A类中有个非静态成员x:

静态成员函数一访问就会出错:

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

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

相关文章

AIGC之Image2Video(一)| Animate Anyone:从静态图像生成动态视频,可将任意图像角色动画化

近日&#xff0c;阿里发布了Animate Anyone&#xff0c;只需一张人物照片&#xff0c;结合骨骼动画&#xff0c;就能生成人体动画视频。 项目地址&#xff1a;https://humanaigc.github.io/animate-anyone/ 论文地址&#xff1a;https://arxiv.org/pdf/2311.17117.pdf Github…

力扣每日一题:2477. 到达首都的最少油耗(2023-12-05)

力扣每日一题 题目&#xff1a;2477. 到达首都的最少油耗 日期&#xff1a;2023-12-05 用时&#xff1a;34 m 15 s 时间&#xff1a;37ms 内存&#xff1a;84.8MB 思路&#xff1a;分别计算每条路上通过的城市数量&#xff08;数量/座位数&#xff0c;向上取整&#xff09;&…

好用的音乐制作工具 Studio One 6中文 for mac

Studio One 6是一款专业的音乐制作软件&#xff0c;提供了全面而强大的功能&#xff0c;帮助音乐制作人、录音工程师和创作者实现他们的创意。 它的主要特点包括&#xff1a;直观的用户界面&#xff0c;使得操作变得简单易懂&#xff1b;支持多轨录音&#xff0c;允许用户进行…

layui日历插件

layui日历插件: 在已开源的layui日历插件的基础上的改版&#xff08;原版插件地址&#xff1a;https://gitee.com/smalldragen/lay-calender-mark&#xff09;https://gitee.com/tangmaozizi/layui-calendar-plugin.gitjava后台代码并没有把项目完整结构上传上去&#xff0c;因…

有源功率因数校正电路的设计(论文+仿真)

1. 系统设计 本文围绕有源功率因数校正电路的设计而展开&#xff0c;拟以BOOST的拓扑结构进行有源功率因数校正电路的搭建&#xff0c;通过不同电流模式的Boost变换电路实际应用及其分析&#xff0c;能够总结最优的解决设计方案&#xff0c;在方案建立的基础之上&#xff0c;通…

控制台电商项目实现

电商项目&#xff08;前台&#xff09;&#xff1a; 登录注册模块 商品模块 订单模块 购物车模块 登录注册模块 第一个:表--java bean对应&#xff0c;表中字段对应java bean的类 第二个&#xff1a;面向接品的开发--接口--登录 注册 实现一个类去实现这个接口 注册&a…

【数据库】基于散列的两趟算法原理,以及集合与包的并,差,交,连接操作实现原理,执行代价以及优化

基于散列的两趟算法 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会定…

你真的掌握结构体了么?结构体习题(C语言)

前言 上一期博客我们学习了结构体的相关知识&#xff08;上期链接&#xff09;&#xff0c;但是学了不练也是不行的&#xff0c;我们今天讲给大家分享两道有点恶心的题目&#xff0c;让大家来加深对结构体的理解&#xff0c;那么话不多说我们现在开始吧&#xff01; 第一题 有…

基于HSV空间色彩的图像分割方法(代码实现)

文章目录 1. 分割图片示例&#xff1a;2. 代码实现&#xff1a;3. 运行结果&#xff1a; 1. 分割图片示例&#xff1a; 2. 代码实现&#xff1a; from skimage.io import imread, imshow from skimage import img_as_ubyte # For converting the float image to uint8 from s…

浏览器开发者工具使用(F12)

F12 第一个按钮&#xff1a;停止和开启按钮&#xff0c;默认是开启抓包 第二个按钮&#xff1a;清空抓包记录 第三个按钮&#xff1a;过滤器&#xff0c;可以通过搜索想要的关键字 第四个按钮&#xff1a;保留日志&#xff08;建议必须勾上&#xff0c;不然有些跳转页面无法…

数字工厂时代,如何实现3D数据访问与发布、WEB大模型可视化?

Tech Soft 3D的HOOPS 3D CAD SDK为现代工厂工作流程奠定了基础&#xff0c;通过最快、最准确的CAD数据访问和动态3D可视化支持数字孪生、机器人仿真、设计、流程和规划、IIoT和操作辅助应用程序。 本文将和您详细探讨。如何利用HOOPS技术来增强您的应用程序。 HOOPS_HOOPS试…

OpenAI 在中国申请 GPT-6、GPT-7 商标;Google 推迟发布 OpenAI 竞品 Gemini 至明年 1 月【无际Ai资讯】

天眼查 app 显示&#xff0c;近日&#xff0c;欧爱运营有限责任公司&#xff08;OPENAI OPCO&#xff0c;LLC&#xff09;申请多枚「GPT-6」「GPT-7」商标&#xff0c;国际分类为科学仪器、网站服务&#xff0c;当前商标状态均为等待实质审查。 此前 OpenAI CEO Sam Altman 在接…

【laBVIEW学习】4.声音播放,自定义图标,滚动条设置,保存参数以及恢复参数

一。声音播放&#xff08;报错&#xff0c;未实现&#xff09; 1.报错4810 2.解决方法&#xff1a; 暂时未解决。 二。图片修改 1.目标&#xff1a;灯泡---》自定义灯泡 2.步骤&#xff1a; 1.右键点击--》自定义运行 表示可以制作自定义类型 2.右键--》打开自定义类型 这样就…

UVM验证平台中加入sequencer

sequence机制用于产生激励&#xff0c;它是UVM中最重要的机制之一。在 一个规范化的UVM验证平台中&#xff0c;driver只负责驱动transaction&#xff0c;而不负责产生transaction。sequence机制有两大组成部分&#xff0c;一是 sequence&#xff0c;二是sequencer。如何在验证平…

常用功能测试的检查点与用例设计思路

1 功能测试 1.1 用户登录 1.1.1 数据输入 1. 帐号或密码为空。 2. 帐号或密码长度超长。 3. 帐号或密码不符合格式要求。 4. 帐号在数据库中不存在。 5. 密码在数据库中不存在。 6. 密码在数据库中存在&#xff0c;但与帐号不匹配。 7. 正确的帐号和正确的密码。 8. …

揭秘:软件测试中Web请求的完整流程!

在软件开发的过程中&#xff0c;测试是一个至关重要的环节。而在现代互联网应用中&#xff0c;Web请求是很常见的一个测试需求。本文将介绍Web请求的完整测试流程&#xff0c;帮助读者更好地理解软件测试的关键步骤。 一、测试准备阶段 在进行Web请求测试之前&#xff0c;测试团…

创意云×四川永辉直播首秀顺利开播,vLive助力本地生活直播玩转“双12”

12月5日&#xff0c;“四川永辉超市双12特惠”直播首秀顺利开播&#xff0c;蓝海创意云为此次直播提供了虚拟场景制作和全程的技术支持。蓝海创意云使用自主研发的vLive虚拟直播系统&#xff0c;将其应用到整个直播过程中。这种独特的视觉新体验成功吸引了众多观众的关注和参与…

Java jdk和jre的区别

jdk和jre的区别为&#xff1a;JRE是java运行时环境而JDK是java开发工具包&#xff0c;JDK包含JRE&#xff0c;但是JRE可以独立安装。 JDK&#xff1a; java development kit (java开发工具)&#xff0c;JDK 是用于开发 Java 程序的最小环境。 JRE&#xff1a; java runtime e…

【动态规划】LeetCode-64.最小路径和

&#x1f388;算法那些事专栏说明&#xff1a;这是一个记录刷题日常的专栏&#xff0c;每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目&#xff0c;在这立下Flag&#x1f6a9; &#x1f3e0;个人主页&#xff1a;Jammingpro &#x1f4d5;专栏链接&…

一线大厂Redis高并发缓存架构

场景1&#xff1a;秒杀库存场景&#xff0c; 10000人抢100个商品 如果用普通的分布式锁实现&#xff0c; 最后抢到的人&#xff0c;要等前面99个人抢完 优化方案&#xff1a;可用分段锁&#xff0c; 降低锁的粒度&#xff0c; 比如1-10库存用锁product:101_1,11-20库存用锁pr…