类的静态(static)成员

2023-05-16

  有时候类需要它的一些成员与类本身直接相关,而不是与类的各个对象保持关联。(这意味着无论创建多少个类的对象,静态成员都只有一个副本)。我们通过在成员的声明前加上关键字static使得其与类关联在一起。

静态成员变量

四个特点:

1.所有对象都共享同一份数据

2.编译阶段就分配内存(全局区)

3.类内声明,类外初始化操作 

4.静态成员变量也是有访问权限的

 如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零

class Person {
public:
	static int m_A;
	
	//静态成员变量也是有访问权限的
private:
	static int m_B;//类外访问不到私有静态成员变量

};
 int Person::m_A=100;
 int Person::m_B = 200;
void test01() {
	Person p;
	cout << p.m_A << endl;
	Person p2;
	p2.m_A = 200;
	cout << p.m_A << endl;
}
void test02() {
	//静态成员变量  不属于某个对象上,所有对象都共享同一份数据
	//因此静态成员变量有两种访问方式

	//1.通过对象进行访问
	Person p;
	cout << p.m_A << endl;
	//2.通过类名进行访问
	cout << Person::m_A << endl;
}

静态成员函数

对于静态成员函数,所有对象共享同一个函数,静态成员函数只能访问静态成员变量。

访问方式:1.通过对象访问  2.通过类名访问

静态成员函数也是有访问权限的

class Person {
public:
	static void func() {
		m_A = 100;//静态成员函数可以访问 静态成员变量
		//m_B = 200;错误 静态成员函数不可以访问非静态成员变量 无法区分是哪个对象的m_B属性
		cout << "static void func调用" << endl;
	 }
	static int m_A;//静态成员变量
	int m_B;
	//静态成员函数也是有访问权限的
private:
	static void  func2() {

	}
};

int Person::m_A = 0;

void test01() {
	//1.通过对象访问
	Person p;
	p.func();
	//2.通过类名访问
	Person::func();
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类的静态(static)成员 的相关文章

  • 算法要怎么学习

    学习算法 xff0c 切记不要一上来就开始啃 算法导论 xff0c 毕竟这本书并不适合新手学习 xff0c 如果你之前的算法基础比较薄弱 xff0c 只会一直陷在 拿起来又放下 的循环里 可以怎么入门呢 xff1f 建议还是看书 43 实战
  • EGO-Swarm代码解读-地图部分

    文章目录 1 参数解读2 主要函数解读 1 参数解读 一 MappingData md 中的参数含义 xff1a local bound min span class token punctuation span local bound m
  • GNURadio中的PMTs(Polymorphic Types)数据类型

    目录 1 整体概述 2 使用方法的举例说明 3 对于PMT类型的补充说明 1 整体概述 PMTs在GNURadio中代表多态类型 xff08 Polymorphic Types xff09 xff0c 这种类型不像float int一样是严
  • STM32F103C8T6初学笔记

    STM32F103C8T6初学笔记 ST官网链接 xff1a http www stmicroelectronics com cn ST MCU网站链接 xff1a http www stmcu com cn 初识STM32 STM32是3
  • STM32F103 72MHz时钟设置

    将系统时钟初始化到72MHz的函数 根据数据手册和库函数 xff0c 设置STM32时钟为72MHz 这是 c文件 span class token macro property span class token directive key
  • C++ 类和对象学习 —— 继承

    1 6 继承 利用继承技术 xff0c 可以减少重复代码 1 6 1 继承的基本语法 普通实现 span class token macro property span class token directive keyword inclu
  • 解决 VS 无法打开包括文件: “XXX.h”: No such file or directory问题

    每次封装管理 xff0c 当 Visual Studio 包含多个 h 文件和 c 文件 xff0c 运行时总会发生如下错误 错误 C1083 无法打开包括文件 XXX h No such file or directory test1 0
  • C++ 多态深入学习总结笔记

    多态和虚函数 1 通过案例理解多态 案例 xff1a 父类Animal xff0c 2个子类Dog和Cat xff0c 实现speak方法 未使用虚函数 virtual 声明 main h 文件 span class token keywo
  • LaTeX 报错! Missing $ inserted. <inserted text>$ l.44 问题解决

    学习LaTeX编辑器编辑数学公式时 xff0c 输入如下 xff1a 编译报错如下 xff1a 搜索方法 xff0c 并未得到有效解决 xff0c 机缘巧合把空行删除 xff0c 如下图所示 xff1a 再次编译未报错 xff0c 成功运行
  • 在 Microsoft Word 插入代码块(无需下载任何软件)

    Step 1 打开 CSDN Markdown 编辑器 xff0c 点击菜单栏上方代码块 xff0c 选择自己的代码语言 Step 2 插入代码如下图所示 xff0c 之后将代码复制 Step 3 打开 Microsoft Word xff
  • MATLAB 利用YALMIP+Gurobi 求解线性规划 -多无人机扫描覆盖

    使用要点 创建决策变量设置目标函数添加约束条件参数配置求解问题 问题描述 假设M个无人机的任务是尽快覆盖一组由 P 顶点表示的多边形凸区域 xff0c 假设每架无人机的最大飞行时间是有限的 xff0c 并且是预先知道的 每架无人机的都配备了
  • 毕业论文格式系列1 Word 图片交叉引用其题注

    图表论文自动编号 自动编号可以通过 Word 的 题注 功能实现 按论文格式要求 xff0c 第一章的图编号格式为 图1 X xff0c 具体做法如下 xff1a 将图插入文档中后 xff0c 选中新插入的图 xff0c 在 引用 菜单选
  • Visual Studio 2022 编译新版 Mission Planner 地面站

    下载安装VS 2022 安装时 xff0c 注意勾选 安装成功后 xff0c 从Visual Studio官方SDKs下载net461开发包 xff0c 网址 xff1a https dotnet microsoft com en us d
  • GNU Radio中的流标签(Stream Tags)

    目录 0 GR 中常用术语的官方解释 1 定义概述 2 在数据流中添加标签 3 添加标签的demo举例 4 从数据流中的获取标签 5 提取标签的demo举例 0 GR 中常用术语的官方解释 直接吧官方的解释抄过来 xff0c 直接看英文更容
  • 飞控学习随记

    常见指令 编译Arduplane程序 span class token builtin class name cd span ardupilot waf plane 进入 Tools autotest 文件夹中 xff0c 启动3D fli
  • 【无标题】

    apm飞控飞行模式详解 1 稳定模式Stabilize 稳定模式是使用得最多的飞行模式 xff0c 也是最基本的飞行模式 xff0c 起飞和降落都应该使用此模式 此模式下 xff0c 飞控会让飞行器保持稳定 xff0c 是初学者进行一般飞行
  • C# CustomMessageBox.Show() 输出多个变量调试

    Mission Planner 地面站调试中会遇到输出多个变量问题 xff0c 这里采用CustomMessageBox Show来输出调试多个变量 xff0c 用到string Format方法 span class token clas
  • MapReduce实验——学生总成绩报表,学生平均成绩

    学生总成绩报表 Map类 span class token keyword package span span class token class name StudentScore 06 span span class token pun
  • 【Docker操作必看,原来这才是正确打开Docker的新方式】

    前言 一 Docker操作镜像 首先镜像名称一般分为两个部分 xff1a repository tag xff0c 前者是镜像名 xff0c 后者是版本号 在没有指定tag的情况下 xff0c 默认是latest 代表的是最新版本 1 拉取
  • 第五章 FreeRTOS 任务基础知识

    5 1 什么是多任务系统 在使用 51 AVR STM32 单片机裸机 未使用系统 的时候一般都是在main 函数里面用 while 1 做一个大循环来完成所有的处理 xff0c 即应用程序是一个无限的循环 xff0c 循环中调用相应的函数

随机推荐

  • C语言for循环详解

    for 循环的使用更加灵活 xff0c 在日常的程序开发过程中我们会使用的更多一些 使用 while 循环来计算1加到100的值 xff0c 代码如下 xff1a include span class token generics func
  • Python批量下载sci-hub文献

    coding utf 8 import requests from bs4 import BeautifulSoup import os re path 61 34 Downloaded 34 if os path exists path
  • Ubuntu16.04 安装NS3.36.1及可视化模块

    如果不是必要 xff0c 尽量不要在Ubuntu 16 04上装3 36 1这个版本 xff0c 因为比较麻烦 NS3 36 1的新特性 安装依赖 一条一条执行 xff01 xff01 xff01 ns3 36需要用的python3 xff
  • ES6模块化及ES7新增特新性

    一 babel ES6代码转换为ES5的代码 1 初始化项目 npm init npm init y 不需要配置 xff0c 直接跳过 2 安装转码工具 cnpm install g babel cli cnpm install save
  • GNU Radio中的消息传递机制(Message Passing)

    目录 0 首先看下 GR 中一些常用术语的官方解释 1 定义理解 2 消息传递端口API 3 消息处理函数 4 通过流程图连接消息 5 从外部源发布数据 6 使用消息传送命令 7 一个消息传输的例子 0 首先看下 GR 中一些常用术语的官方
  • 单片机零基础完整攻略-1

    序 xff1a 学习原因 在网上看到各路大神用一个小小的板子就能玩起来一些很有趣的小项目 xff0c 觉得非常之神奇 为什么一个小小的板子就能做到物联网 xff0c 机器人那么多花里胡哨的功能 xff1f 正好赶上学校开设了这门课 xff0
  • HDF5 header version与HDF5 library不匹配问题的解决

    如图 xff1a 试着安装这个 conda install c conda forge hdf5 61 1 10 5 conda不行用pip 还不行就去这个网站下载 xff0c 上面搜索框直接搜hdf5 xff0c 然后找1 10 5版本的
  • Vscode C++的基础配置文件以及无法产生可编译文件exe的处理方法(undefined reference)

    采用排除法 xff1a 1 是否将工作文件夹添加工作区 xff1f 打开vscode 文件 打开文件夹 文件 将文件夹添加工作区 xff08 或者另存为一个 xff09 xff0c 把工作区文件放到工作文件夹里 如下 xff1a Manag
  • Arduino零基础实践2——串口数据发送

    具体的原理在微机开发中详细介绍了 xff0c 下面直接使用arduino进行数据收发 13条消息 单片机攻略4 中断和串口 r135792uuuu的博客 CSDN博客 void setup Serial begin 9600 void lo
  • px4开发bug记录

    一 仿真问题 1 roslaunch无法启动px4 gazebo的无人机仿真 xff0c 但是make px4 sitl gazbeo可以正常启动 2 make px4 sitl gazbeo启动到一半无法启动 xff0c 显示无法连接ga
  • linux无损扩容

    linux笔记本上空间不够用了 xff0c 重新从windows里划分30个g出来给linux xff0c 记录一下 1 准备u盘 xff0c u盘里面全部清空 xff0c 不能有任何东西 下载一个Ubuntu的桌面文件 xff0c 大概有
  • Linux更新源 source.list 自定义第三方源

    1 官方默认源 打开软件和更新 xff0c 直接图形化操作 但是只能设置一个源 xff0c 对于下载多种多样的包可能不够 xff0c 所以需要自定义多个不同源 2 自定义添加源 源的文件 sources list在 etc apt sour
  • 现在没有可用的软件包 *** ,但是它被其它的软件包引用了 和 E: 无法定位软件包 ***问题解决

    root 64 zhouls virtual machine snort src apt get install bison flex 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 现在没有可用的软件包 fl
  • sdf文件轨范

    sdf文件规范 xff1a a href https www zhihu com org aigraphx posts page 61 3 title 深圳季连AIGRAPHX 知乎 深圳季连AIGRAPHX 知乎 a span style
  • HBase基本操作

    HBase Java API 操作 Tips xff1a 其实每一个操作都可以简化为 xff1a 1 配置并连接数据库 2 编写 Java API 的 HBase 的操作 3 使用权限 执行操作 要对一个Hbase数据库进行操作的话 xff
  • GNU Radio3.8:编辑yaml文件的方法

    GNU Radio 学习使用 OOT 系列教程 xff1a GNU Radio3 8创建OOT的详细过程 基础 C 43 43 GNU Radio3 8创建OOT的详细过程 进阶 C 43 43 GNU Radio3 8创建OOT的详细过程
  • input上传图片并且实现预览

    文章目录 前言一 确定思路二 书写代码1 HTML部分2 CSS部分3 JS部分 xff08 重点 xff09 3 1 点击选择图片按钮 xff0c 调用input文件框事件的的代码3 2 转换格式3 3 发送图片给后端 三 编写优化1 i
  • hashcode()和equals()方法详解

    hashcode 和equals 方法详解 1 何为hashcode hash是一个函数 xff0c 就是通过一种算法来得到一个hash值 通过hash算法得到的hash值就存放在这张hash表中 xff0c 也就是说hash表示所有的ha
  • ubuntu安装kvm

    kvm是linux下的虚拟机 文章目录 一 电脑硬件支持二 安装ubuntu三 安装kvm 一 电脑硬件支持 首先不用多说啦 xff0c 既然是虚拟机 xff0c 当然要自己的机器支持虚拟技术 xff0c 重启机器进入biso xff0c
  • 类的静态(static)成员

    有时候类需要它的一些成员与类本身直接相关 xff0c 而不是与类的各个对象保持关联 xff08 这意味着无论创建多少个类的对象 xff0c 静态成员都只有一个副本 xff09 我们通过在成员的声明前加上关键字static使得其与类关联在一起