C++ :静态成员

静态成员

静态成员就是在成员变量和成员函数前加上关键字 static ,称为静态成员
静态成员分为:
      静态成员变量
     1.所有对象共享同一份数据
     2.在编译阶段分配内存
     3.类内声明,类外初始化
      静态成员函数
      1.所有对象共享同一个函数
      2.静态成员函数只能访问静态成员变量

静态成员变量:

//静态成员变量 
class Person
{
public:/*  所有对象共享同一份数据在编译阶段分配内存类内声明,类外初始化*/static int m_A; //静态成员变量   类内声明};int Person::m_A=100;//类外初始化void test01()
{Person p;cout << p.m_A << endl;  //100 Person p2;p2.m_A = 200;          //p2修改数据为200cout << p.m_A << endl; //共享同一份数据
}int main()
{test01();system("pause");return 0;
}

 静态成员变量 不属于某个对象上,所有对象都共享同一份数据
    因此静态成员变量有两种访问方式
    1、通过对象进行访问   2、通过类名进行访问

void test02()
{//静态成员变量 不属于某个对象上,所有对象都共享同一份数据//因此静态成员变量有两种访问方式//1、通过对象进行访问/*Person p;cout << p.m_A << endl;*/// 2、通过类名进行访问cout << Person::m_A << endl;
}

静态成员变量也是有访问权限的 :类外私有权限访问不到

//静态成员变量 
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;  //100 Person p2;p2.m_A = 200;          //p2修改数据为200cout << p.m_A << endl; //共享同一份数据
}void test02()
{//静态成员变量 不属于某个对象上,所有对象都共享同一份数据//因此静态成员变量有两种访问方式//1、通过对象进行访问/*Person p;cout << p.m_A << endl;*/// 2、通过类名进行访问cout << Person::m_A << endl;  //共有权限//cout << Person::m_B << endl;  //err 类外私有权限访问不到
}int main()
{test01();system("pause");return 0;
}

静态成员函数:

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

//静态成员函数://1 所有对象共享同一个函数
//2 静态成员函数只能访问静态成员变量class Person
{
public://静态成员函数static void func(){m_A = 100;   //静态成员函数可以访问静态成员变量//m_B =200; //错误,不可以访问非静态成员变量  无法区分cout << "static void func调用" << endl;}static int m_A;  //静态成员变量   类内声明int m_B;             //非静态成员变量private://静态成员函数也是有访问权限的static void func2(){cout << "func2调用" << endl;}
};int Person::m_A=0;   //类外初始化void test01()
{//静态成员变量两种访问方式//1、通过对象Person p;p.func();//2、通过类名Person::func();// Person::func2();//类外私有权限访问不到
} int main() 
{test01();system("pause");return 0;
}

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

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

相关文章

CSGO搬砖还能做吗?CSGO饰品未来走势如何?

steam/csgo搬砖项目真能月入过万吗&#xff1f;到底真的假的&#xff1f; 如何看待CSGO饰品市场的整体走向&#xff1f; 从整体来说&#xff0c;CSGO的饰品市场与规模肯定会持续不断的上升&#xff0c;大盘不会发生特别大的波动&#xff0c;目前处于稳定期&#xff01;&…

安装最新版WebStorm来开发JavaScript应用程序

安装最新版WebStorm来开发JavaScript应用程序 Install the Latest Version of JetBrains WebStorm to Develop JavaScript Applications By JacksonML 2023-11-25 1. 系统要求 WebStorm是个跨平台集成开发环境&#xff08;IDE&#xff09;。按照JetBrains官网对WebStorm软件…

C++——模板(进阶)

目录&#xff1a; 非类型模板参数 模板参数分类&#xff1a;类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函…

单片机学习10——独立按键

独立按键输入检测&#xff1a; #include<reg52.h>sbit LED1P1^0; sbit KEY1P3^4;void main() {KEY11;while(1){if(KEY10) //KEY1按下{LED10; //LED1被点亮}else{LED11;}} } 按键 #include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit …

【Python技巧】快速安装各种常用库pip、whl、tar.gz最新最全安装方法(超时、快速安装))

【Python技巧】安装各种常用库pip、whl、tar.gz最新最全安装方法 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&…

中科亿海微除法器(DIVIDE)

技术背景 技术概述 FPGA实现除法运算是一个比较复杂的过程&#xff0c;因为硬件逻辑与软件程序的区别。如果其中一个操作数为常数&#xff0c;可以通过简单的移位与求和操作代替&#xff0c;但用硬件逻辑完成两变量间除法运算会占用较多的资源&#xff0c;电路结构复杂&#xf…

了解静态测试?

静态测试是一种软件测试方法&#xff0c;它主要通过分析软件或代码的静态属性来检查潜在的问题和缺陷&#xff0c;而无需实际执行程序。这种测试方法侧重于检查源代码和其他软件文档&#xff0c;以发现错误并提高软件质量。 为什么要做静态测试&#xff1f; 提前发现和修复错…

简易版王者荣耀

所有包和类 GameFrame类 package newKingOfHonor;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList;im…

C语言你爱我么?(ZZULIOJ 1205:你爱我么?)

题目描述 LCY买个n束花准备送给她暗恋的女生&#xff0c;但是他不知道这个女生是否喜欢他。这时候一个算命先生告诉他让他查花瓣数&#xff0c;第一个花瓣表示"爱"&#xff0c;第二个花瓣表示"不爱"&#xff0c;第三个花瓣表示"爱"..... 为了使最…

为啥网络安全那么缺人,但很多人却找不到工作?

文章目录 一、学校的偏向于学术二、学的东西太基础三、不上班行不行 为什么网络安全的人才缺口那么大&#xff0c;但是大学毕业能找到网安工作的人却很少&#xff0c;就连招聘都没有其他岗位多&#xff1f; 明明央视都说了网络安全的人才缺口还有300多万&#xff0c;现在找不到…

鸿蒙应用开发-初见:ArkTS

作者&#xff1a;HarderCoder ArkTS ArkTS围绕应用开发在 TypeScript &#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集 ArkTS在TS的基础上扩展了struct和很多的装饰器以达到描述UI和状态管理的目的 基本语法 …

零基础编程入门视频教程,零基础编程从哪学起,分享中文编程工具构件实例

零基础编程入门视频教程&#xff0c;零基础编程从哪学起&#xff0c;分享中文编程工具构件实例 1、零基础编程入门视频教程&#xff0c;系统化编程教程链接 https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 2、零基础编程从哪学起 建议初学…