3.7——静态成员

news2024/11/17 0:07:50

静态数据成员

静态成员,指的是在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。即声明为static的类成员或者成员函数便能在类的范围内同享。

说明:

1)静态数据成员定义与普通数据成员相似,但前面要加上static关键字。

例如:

        static float total;//总分
        static int count; //对象个数

         static float average;//平均分

2)静态数据成员的初始化与普通数据成员不同。静态数据成员初始化应在类外单独进行,而且要在定义对象前进行。一般是在main函数前面。

初始化的格式:

数据类型 类名::静态数据成员名=初始值;

float Student::total = 0;//静态数据成员的初始化
int Student::count = 0;//静态数据成员的初始化
float Student::average = 0;//静态数据成员的初始化

3)静态数据成员属于类(准确地说,是属于类对象的集合),而不像普通数据成员那样属于某一个对象,因此可以使用 “类名::”访问静态数据成员。用类名访问静态数据成员的格式如下:

类名::静态数据成员名

4)静态数据成员与静态变量一样,是在编译时创建并初始化。

5)私有静态数据成员不能在类外直接访问,必须通过公有的成员函数访问。

6)C++支持静态数据成员的一个重要原因是可以不必使用全局变量。依赖于全局变量的类几乎都是违反面向对象程序设计的封装特性的。静态数据成员主要用作类的所有对象公用的数据,如统计总数,平均数等。

声明为静态的数据成员,我们定义的数据成员就可以做到共享,比如我们计算班级的平均分,我们需要使用每一个对象分数相加,然后除对象的个数,我们就需要两个变量来储存总分和对象个数。

我们定义全局变量也可以解决数据共享,但是全局变量数据存在不安全性,不符合我们面对对象程序设计的思想。我们将静态数据成员在私有成员处定义,这样我们可以起到保护数据的作用。 

静态成员函数

在类定义中,前面有static说明的成员函数称为静态成员函数。静态成员函数属于整个类,是该类所有对象共享的成员函数,而不属于类中的某个对象。定义静态成员的格式:

static 返回类型 静态成员函数名(参数表)

调用公有的静态成员函数的几种方法

类名::静态成员函数名(实参表)

对象.静态成员函数名(实参表)

对象指针->静态成员函数名(实参表)

说明:

1)静态成员函数只能访问静态成员。

2)私有静态成员函数不能做类外部的函数和对象访问。

3)使用静态成员函数的一个原因是,可以用它在建立对象之前调用静态成员函数,以处理静态数据成员,这是普通成员函数不能实现的功能。

4)编译系统将静态成员函数限定为内部连接,也就是说,与现行文件相联接的其他文件中的同名函数不会与该函数发生冲突,维护了该函数使用的安全性。

5)静态成员函数是类的一部分,而不是对象的一部分。

6)静态成员函数与非静态成员函数的重要区别是,非静态成员函数有this指针,而静态成员函数没有this指针。

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

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

相关文章

WordGPT正式版4.0安装教程

下载 https://www.xsoftnet.com/share/a0004MZyPvB5k.html产品介绍: WordGPT正式版来了,V4.0震撼发布,兼容Office与WPS,集提纲生成、内容创作、文本补全、文章润色、归纳总结、自定义提示词、快捷排版为一体的多场景智能文案创作…

IT知识百科:什么是超融合数据中心网络?

超融合数据中心网络(Hyper-Converged Data Center Network)是一种基于软件定义网络(SDN)和虚拟化技术的新型数据中心网络架构。该架构将计算、存储和网络三大要素融合在一起,实现了网络、计算、存储资源的统一管理&…

HTML5 拖放

文章目录HTML5 拖放拖放浏览器支持HTML5 拖放实例设置元素为可拖放拖动什么 - ondragstart 和 setData()放到何处 - ondragover进行放置 - ondropHTML5 拖放 拖放(Drag 和 drop)是 HTML5 标准的组成部分。 拖放 拖放是一种常见的特性,即抓取…

没有两把刷子还敢来面试测试开发工程师?

目录 前言 1.对测试开发的理解 2.为什么做测试而不是去做开发 3.如何处理矛盾 4.职业发展 5.你认为测试人员需要具备哪些素质。(你有哪些优点围绕这些来说) 6.你为什么能够胜任这个岗位 7.测试方法 黑盒测试 白盒测试 8.测试的阶段 9.测试的类…

【ROS2指南-7】理解ROS2的Action

目标: 理解并学习ROS 2 中的Action通信方式。 教程级别:初学者 时间: 15分钟 内容 背景 先决条件 任务 1 设置 2 使用动作 3 ros2节点信息 4 ros2 动作列表 5 ros2 动作信息 6 ros2界面展示 7 ros2 动作 send_goal 概括 下一步 …

敏捷开发项目如何做好中长期规划

在一次与客户的方案交流中,我们的团队意识到研发软件产品和建造房屋是比较相似的工作,两者都是长期项目,需要多个团队相互协调,都会有验收方进行确认。并且在项目进行过程中,想法总是在变化,不断会有新的需…

易点易动固定资产管理系统如何解决固定资产管理中的个性化需求

随着企业规模的扩大和企业管理需求的多样化,固定资产管理已经成为企业日常运营的重要环节。然而,传统的固定资产管理方式在满足企业个性化需求方面表现出明显的不足。在这种背景下,易点易动固定资产管理系统应运而生,为企业提供了…

代码随想录Day51

今天继续学习动规解决相关问题。 337.打家劫舍||| 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有…

【RabbitMQ学习日记】—— 初识RabbitMQ

一、消息队列 1.1 MQ的相关概念 1.1.1 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。…

MinIO从信息泄漏到RCE

文章目录信息泄露漏洞利用漏洞分析漏洞修复RCE漏洞分析参考文章信息泄露 漏洞利用 如果MinIO以集群方式部署,存在信息泄露漏洞,攻击者可以通过HTTP请求获取目标进程的所有环境变量,包括MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD. vulhub有环…

paddle实现手写数字识别模型继续解读

要点: 手写数字识别用简单的线性进行分类效果比较差,添加卷积层和池化层效果会相对较好。参考文档:百度官方文档 一 网络结构 前几节我们尝试使用与房价预测相同的简单神经网络解决手写数字识别问题,但是效果并不理想。原因是手…

ROS开发之如何使用常用可视化工具?

文章目录0、引言1、rqt工具2、RViz工具3、Gazebo工具0、引言 笔者因研究课题涉及ROS开发,学习了古月居出品的ROS入门21讲,为巩固可视化工具的知识,本文将ROS的常用可视化工具使用一讲内容进行总结。    1、rqt工具 在终端输入:…

图解二叉搜索树

gitee代码:https://gitee.com/WangZihao64/data-structure-and-algorithm/tree/master/BST 一、概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值…

网站怎么接入chatGPT来自动写文章

用chatGPT写文章接入网站 将ChatGPT集成到网站中,可以让用户在网站上快速、简便地生成文章,并且可以提高用户体验。以下是一些用ChatGPT写文章接入网站的方法: 使用ChatGPT API接口:OpenAI提供了GPT-3 API接口,您可以…

c++11 常用新特性大总结

1.统一的初始化列表 在c98中我们经常会用{}初始化数组,而为了更近一步初始化我们在c11中采用{}的形式,代替等于号来帮助我们初始化的进行 举个例子: struct Point {int _x;int _y; }; int main() {int array1[] { 1, 2, 3, 4, 5 };int ar…

2023年七大最佳勒索软件解密工具

勒索软件是目前最恶毒且增长最快的网络威胁之一。作为一种危险的恶意软件,它会对文件进行加密,并用其进行勒索来换取报酬。 幸运的是,我们可以使用大量的勒索软件解密工具来解锁文件,而无需支付赎金。如果您的网络不幸感染了勒索软…

【MySQL】实验七 视图

文章目录 1. 建立city值为上海、北京的顾客视图2. 建立城市为上海的客户2016年的订单信息视图3. SQL视图:建立视图AVG_CJ4. SQL视图:建立视图IS_STUDENT5. SQL视图:建立视图CJ_STUDENT6. SQL视图:根据视图CJ_STUDENT创建视图CJ_TJ1. 建立city值为上海、北京的顾客视图 建立…

webgl-画一个彩色矩形

html <!DOCTYPE html> <head> <style> *{ margin: 0px; padding: 0px; } </style> </head> <body> <canvas id webgl> 您的浏览器不支持HTML5,请更换浏览器 </canvas> <script src"./main.js"></script&g…

基于七牛云和PicGo的图床搭建

第一次搭建的博客因为误操作且没有备份导致无法访问和恢复。第二次搭建吸取了第一次的错误&#xff0c;并且准备用图床进行图片的访问。 需要用到的&#xff1a; 七牛云&#xff0c; PicGo&#xff0c; Typora&#xff0c; 已备案域名。 七牛云和域名 进入七牛云的页面&…

Nginx 服务器 SSL 证书安装部署

工具&#xff1a;WinSCP、putty 1.下载证书 cloud.tencent.com_bundle.crt 证书文件cloud.tencent.com_bundle.pem 证书文件&#xff08;可忽略该文件&#xff09;cloud.tencent.com.key 私钥文件cloud.tencent.com.csr CSR 文件 2.上传证书到服务器 通过WinSCP将已获取到的…