C++ 类的静态成员详解【static】

news2024/11/29 7:51:48

目录

 

前言

一、类的静态成员

1.static关键字

2.静态成员变量

3.静态成员函数

二、程序样例

1.程序演示

2.程序截图

总结


前言

本文记录C++中 static 修饰类成员成为静态成员,其中包括静态成员类别、作用和程序演示。

嫌文字啰嗦的可直接跳到最后的总结。


一、类的静态成员

1.static关键字

(1)C++中 static 关键字意为静态,用于修饰类中的成员(包括变量和函数)。

(2)用static修饰成员变量即为静态成员变量;用static修饰成员函数即为静态成员函数。

(3)静态成员属于类本身,而不属于对象。

2.静态成员变量

(1)静态成员变量必须在类声明的外部初始化。

(2)静态成员变量是在初始化时分配内存的,程序结束时释放内存。

(3)静态成员变量可以通过类名或对象名来引用,非静态成员变量只能通过对象名引用。

3.静态成员函数

(1)静态成员函数中不可以定义 this、super 关键字。

(2)静态成员函数只能访问静态成员,非静态成员函数既可访问静态成员也可访问非静态成员。

(3)静态成员函数可以通过类名或对象名来引用,非静态成员函数只能通过对象名引用。

二、程序样例

1.程序演示

代码如下(可仅在vs2017编辑器内显示不执行):

#include <iostream>
using namespace std;

class MyClass
{
public:
	int a = 0;
	static int b; // 类内声明 类外初始化(定义)
	//static int b = 0; // 静态成员变量类内初始化(定义)报错

public:
	void fun()
	{
		cout << "fun()被调用了" << endl;
		cout << a << endl;
		cout << b << endl;
		int z1 = this->a;
		int z2 = this->b;
	};
	static void show()
	{
		cout << "show()被调用了" << endl;
		//cout << a << endl; // 静态成员函数访问非静态成员变量报错
		cout << b << endl;
		//int z1 = this->a; // this指针访问非静态成员变量报错
		//int z2 = this->b; // this指针访问静态成员变量报错
	};
};

int main()
{
	MyClass mc;
	int x1 = mc.a;
	//int x2 = MyClass::a; // 类名调用非静态成员数据报错
	int y1 = mc.b;
	int y2 = MyClass::b;
	mc.fun();
	//MyClass::fun(); // 类名调用非静态函数报错
	mc.show();
	MyClass::show();

	system("pause");
	return 0;
}

2.程序截图

程序截图如下(vs2017编辑器内显示图中红色波浪线为报错):


 总结

静态成员函数非静态成员函数
所有对象共享YesYes
隐含this指针NoYes
访问非静态成员变量(函数)NoYes
访问静态成员变量(函数)YesYes
通过类名直接调用YesNo
通过对象名直接调用YesYes

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

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

相关文章

从爆红到被黑,游戏黑产攻防48小时

编者按&#xff1a; 数字化浪潮蓬勃兴起&#xff0c;企业面临的安全挑战亦日益严峻。 腾讯安全近期将复盘2022年典型的攻击事件&#xff0c;帮助企业深入了解攻击手法和应对措施&#xff0c;完善自身安全防御体系。 本篇聚焦某游戏公司新游戏上线后与黑产多轮攻防的48小时里…

Python遥感开发之arcpy批量重采样

Python遥感开发之arcpy批量重采样1. 重采样2. ARCGIS中的重采样3. Python_arcpy代码实现前言&#xff1a;主要介绍使用ARCGIS中自带的重采样工具&#xff0c;以及Python代码实现arcpy批量重采样&#xff0c;使用Python代码更加方便快捷。1. 重采样 作用&#xff1a;更改栅格数…

百度飞桨公布最新成果:凝聚535万开发者,服务20万家企事业单位

11月30日&#xff0c;由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT2022深度学习开发者峰会如期而至。鹏城实验室主任、中国工程院高文院士&#xff0c;深圳大学电子与信息工程学院院长、深度学习技术及应用国家工程研究中心技术委员会副主任、中国工程院丁文华院士受…

【数据结构】二叉树详解(下篇)

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《数据结构》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; 二叉树&…

c#、wpf开发中页面在win10下被缩放125%引起页面错乱的解决办法。

正常情况下,我们开发的页面页面应该是100%缩放的,这样程序在win7和win10下保持一致,但是win10里面会根据显示器的情况自动调整“缩放与布局”,这使得桌面程序有时候会发生页面错乱,怎么调整就是个问题。 如图:在“缩放与布局”100%显示如下: 而在 “缩放与布局”125%显…

etcd cli选举流程

etcd cli选举流程 创建选举的Session 可配置项&#xff1a; WithTTL&#xff1a;设置session的存活时间&#xff0c;默认60sWithLease&#xff1a;设置session的key的lease&#xff0c;默认新建一个TTL为session TTL的leaseWithContext&#xff1a;设置context&#xff0c;默…

逆势高速增长,毫末征战三年诠释量产为王

作者 | 白日梦想家 编辑 | 王博“1096天&#xff0c;这是一场毫末人自己与自己“死磕”的大战。”11月29日&#xff0c;毫末智行在公司成立三周年的内部信中这样总结。 死磕的事情&#xff0c;包括&#xff1a; 以“自动驾驶三定律”为战略原点&#xff0c;创建了业内独有的毫末…

点餐项目实现

目录项目简介功能设计数据库表设计用户表订单表菜品表订单详情表&#xff08;关联菜品表和订单表)配置类实体类DishOrderDetailOrderInfoUserInfo统一后端返回内容用户模块用户注册功能mapper接口xml文件controller层前端用户登录功能验证用户账号和密码(session存储)session k…

Oracle表空间详细介绍

表空间概述 Oracle的表空间属于Oracle中的存储结构&#xff0c;是一种用于存储数据库对象(如&#xff1a;数据文件)的逻辑空间&#xff0c;是Oracle中信息存储的最大逻辑单元&#xff0c;其下还包含有段、区、数据块等逻辑数据类型。表空间是在数据库中开辟的一个空间&#xf…

GoEXP规则变更通知 l 信创额外奖励活动

一、规则变更 Goby 致力于打造高质量漏洞 EXP&#xff0c;每个环节的细节都不容忽视。为了提升大家在 Goby 上查看、使用 EXP 等环节的体验&#xff0c;我们针对 GoEXP 计划规则中的 EXP 参数部分提出规约。 参数名必须要⻅名思义&#xff0c;禁⽌使⽤套⽤。 反例&#xff1…

Mybatis-Plus--LambdaQueryChainWrapper--使用/实例

原文网址&#xff1a;Mybatis-Plus--LambdaQueryChainWrapper--使用/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文用示例介绍Mybatis-Plus的LambdaQueryChainWrapper的用法。 这种用法是使用Mybatis-Plus进行查询最好用的方法&#xff0c;用过一次后就不会再想用其他写法了…

某有色金属集团主数据管理面临的问题和解决方案

某有色金属集团成立于2002年&#xff0c;出资人为省国资委&#xff0c;注册资金12.6亿元人民币。以有色金属、稀有金属、黄金资源开发为主&#xff0c;集地质勘查、采矿、选矿、冶炼、加工、科研设计、机械制造、建筑安装、商贸物流及物资进出口、房地产开发、物业管理为一体的…

获得认证标志证书VMC教程

Verified Mark Certificate(VMC)是由证书颁发机构颁发的用于验证徽标所有权的数字证书。在收到VMC之前&#xff0c;您的徽标必须是注册商标。 VMC验证您的组织是您品牌徽标的合法所有者。使用带有VMC的徽标有助于防止垃圾邮件发送者和其他恶意用户使用他们不拥有的品牌徽标。注…

Linux权限介绍

文章目录Linux权限介绍1. shell命令及原理2. Linux权限的概念3. Linux权限管理3.1 人&#xff08;用户&#xff09;3.2 事物属性(文件类型和访问权限)3.3 文件访问权限的相关设置方法3.3.1 chmod3.3.2 chown3.3.3 chgrp3.4 file指令3.5 目录权限3.6 默认权限3.7 粘滞位3.7.1. 了…

matlab学习笔记(七)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 matlab学习笔记&#xff08;七&#xff09;一、 LTI系统的响应impulse( ) 函数step( )函数lsim( )函数系统无初态时系统有初始状态时二、使用步骤A1&#xff1a;A2&#xff1…

Sentinel原理分析

1.概述 Sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于服务容错的综合性解决方案; Sentinel是面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助您保障微服务的稳定性; 本质要做的就是两件事: …

第2部分 路由器基本配置

目录 2.1 路由器及IOS 简介 2.1.1 路由器简介 2.1.2 IOS 简介 2.1.3 CDP 协议介绍 2.2 路由器基本配置命令汇总 2.1 路由器及IOS 简介 2.1.1 路由器简介 路由器能起到隔离广播域的作用&#xff0c;还能在不同网络间转发数据包。路由器实际上是一台特殊用途的计算机&#…

[论文阅读] Curriculum Semi-supervised Segmentation

[论文地址] [代码] [MICCAI 19] Abstract 本研究调查了半监督CNN分割的课程式策略&#xff0c;它设计了一个回归网络来学习图像级信息&#xff0c;如目标区域的大小。这些回归被用来有效地规范分割网络&#xff0c;约束未标记图像的softmax预测&#xff0c;使其与推断的标签分…

【 第五章 多表关系,多表查询,内连接,外连接,自连接,联合查询,子查询】

第五章 多表关系&#xff0c;多表查询&#xff0c;内连接&#xff0c;外连接&#xff0c;自连接&#xff0c;联合查询&#xff0c;子查询 1.多表关系&#xff1a; &#xff08;1&#xff09;一对多(多对一) 案例: 部门 与 员工的关系 关系: 一个部门对应多个员工&#xff0c;…

【springMVC_11_SpringMVC拦截器_ 拦截器的介绍】

1.什么是拦截器 SpringMVC提供了Intercepter拦截器机制&#xff0c;类似于Servlet当中的Filter过滤器&#xff0c;用于拦截用户的请求并作出相应的处理&#xff0c;比如通过拦截器来进行用户权限验证或者用来判断用户是否登录。SpringMVC拦截器是可插拔式的设计&#xff0c;需…