当前位置: 首页 > news >正文

静态成员相关知识

静态成员就是成员变量和成员函数前加关键字static,称为静态成员。

静态成员分为静态成员变量和静态成员函数。

静态成员变量

所有对象共享同一份数据,在编译阶段分配内存,类内声明,类外初始化。

#include<iostream>
using namespace std;
class Person
{
public:static int m_A;//所有对象共享同一份数据,编译阶段就分配了内存};
int Person::m_A = 100;//类外初始化
void test01()
{Person p;cout << p.m_A << endl;Person p2;p2.m_A = 200;cout << p.m_A << endl;//由于共享一份数据,用p.m_A访问,也是200
}int main()
{test01();
}

静态成员变量不属于某个对象上,所以所有对象都共享一份数据,因此静态成员变量有两种访问方式

1.通过对象进行访问

2.通过类名进行访问

void test02()
{Person p;cout << p.m_A << endl;//通过对象访问cout << Person::m_A << endl;//通过类名访问属性
}
int main()
{test02();
}

静态成员变量有访问权限,,如果是私有作用域下,类外无法访问。

静态成员函数

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

#include<iostream>
using namespace std;
class Person
{
public:static void func(){cout << "静态成员函数调用" << endl;}
};int main()
{    
//两种访问方式Person p;p.func();//因为不属于对象,所以可以使用类名来访问Person::func();
}

 静态成员函数只能访问静态成员变量。

#include<iostream>
using namespace std;
class Person
{
public:static void func(){m_A = 200;//静态成员函数可以访问静态成员变量//m_B = 200;此时静态成员函数,无法访问非静态成员变量,无法区分是哪个对象的m_B的属性cout << "静态成员函数调用" << endl;}static int m_A;int m_B;
};
int Person::m_A = 0;
int main()
{Person p;p.func();Person::func();
}

http://www.dtcms.com/a/143327.html

相关文章:

  • AOSP的Doze模式-LightIdle初识
  • 测试基础笔记第六天
  • 『Linux_网络』 第二章 UDP_Socket编程
  • 从《周游记3》演绎歌剧版《菊花台》,周杰伦婚礼曲目意大利文版惊喜亮相
  • docker 搭建nacos 2.2.1版本单机版
  • 下一代互联网
  • java怎么完善注册,如果邮箱中途更换,能否判断
  • 2025/4/19 数据库的流程控制函数
  • Redis客户端下载使用
  • 【操作系统原理01】操作系统引论
  • Mysql从入门到上手(二)-全面了解增删改查(CRUD).
  • 《目标检测双雄:YOLO与Faster R-CNN,谁主沉浮?》
  • 文本生成与采样策略 (Text Generation Sampling)
  • c# 字典存储的委托失效?
  • 结合建筑业务讲述TOGAF标准处理哪种架构
  • 毕业论文超清pdf带标签导出
  • goc命令大全
  • spring boot应用部署IIS
  • 【软件测试】
  • Docker安装与介绍(一)
  • Trae,字节跳动推出的 AI 编程助手插件
  • 进程控制(下)【Linux操作系统】
  • linux下C++性能调优常用的工具
  • AcWing 11:背包问题求方案数 ← 0-1背包
  • 科学研究:怎么做
  • [密码学基础]国密算法深度解析:中国密码标准的自主化之路
  • 计算机软考中级 知识点记忆——排序算法 冒泡排序-插入排序- 归并排序等 各种排序算法知识点整理
  • 腾讯云对象存储m3u8文件使用腾讯播放器播放
  • React 文章列表
  • 2024-04-19| Java: Documented注解学习 JavaDoc