当前位置: 首页 > 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();
}

相关文章:

  • 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安装与介绍(一)
  • 官方披露:定西民政局原局长将收受烟酒高价“倒卖”给单位,用于违规接待
  • 闲置书换蔬菜,浙江嘉善启动全民阅读系列活动
  • 遭遇FIFA三个转会窗禁令,申花有苦难言将选择赔偿
  • 汕头22岁女子手术成功却意外脑死亡,家属称缺氧30分钟医生未发觉
  • 新疆维吾尔自治区政协原副主席窦万贵一审被控受贿超2.29亿
  • 夜读丨石头比月光温柔