【C++】继承 ⑩ ( 继承机制中的 static 静态成员 | 子类中访问父类静态成员的方法 )

news2024/9/20 8:49:11

文章目录

  • 一、继承机制中派生类中的 static 关键字
    • 1、子类继承父类静态成员
    • 2、父类静态成员访问控制权限的改变
    • 3、子类如何访问父类静态成员
    • 4、静态成员使用要点
  • 二、完整代码示例





一、继承机制中派生类中的 static 关键字




1、子类继承父类静态成员


子类继承父类静态成员 : 父类 ( 基类 ) 中 使用 static 关键字 定义的 静态成员变量 , 可以被所有的 子类 ( 派生类 ) 共享 ;


2、父类静态成员访问控制权限的改变


继承自 父类的 静态成员变量 , 仍然遵循 继承中 子类的 访问控制特性 ,

  • public 公有继承 : 父类成员 在 子类 中 , 访问控制权限 不变 , 共有 和 保护成员 可以在子类访问 , 私有成员不可在子类中访问 ;

    • 父类中的 public 成员 仍然是 public 成员 ;
    • 父类中的 protected 成员 仍然是 protected 成员 ;
    • 父类中的 private 成员 仍然是 private 成员 ;
  • protected 保护继承 : 父类成员 在 子类 中 , 访问控制权限 变为 protected , 基类的 公有成员 和 保护成员 可以在子类访问 , 私有成员不可在子类中访问 ;

    • 父类中的 public 成员 变为 子类中的 protected 成员 ;
    • 父类中的 protected 成员 仍然是 protected 成员 ;
    • 父类中的 private 成员 仍然是 private 成员 ;
  • private 私有继承 : 父类成员 在 子类 中 , 所有成员的访问控制权限 变为 private , 基类的 所有成员 都不可在子类中访问 ;

    • 父类中的 public 成员 变为 子类中的 private 成员 ;
    • 父类中的 protected 成员 变为 子类中的 private 成员 ;
    • 父类中的 private 成员 仍然是 private 成员 ;

3、子类如何访问父类静态成员


子类中 使用

父类类名 :: 静态成员名
Parent::c = 20;

子类类名 :: 静态成员名
Child::c = 40;

对象名.静态成员名
child.c = 30;

的方式 , 访问 继承自 父类的 静态成员 ;


4、静态成员使用要点


参考 【C++】静态成员变量 ( 静态成员变量概念 | 静态成员变量声明 | 静态成员变量初始化 | 静态成员变量访问 | 静态成员变量生命周期 ) 博客 , 静态成员需要

  • 先在类中定义静态变量 ,
class Parent {
public:
	// 父类静态成员
	static int c;
};
  • 然后在外部声明 并进行初始化 , 该步骤的作用是 告诉编译器 , 为 静态变量 分配内存 , 否则不分配内存 编译会报错 ;
// 声明并初始化静态变量
// 如果没有该操作 , 静态成员不可用
int Parent::c = 10;

之后 , 才能使用 类的 静态成员 , 如果没有在类外部初始化 , 该静态成员是无法使用的 ;





二、完整代码示例



代码示例 :

#include "iostream"
using namespace std;

class Parent {
public:
	// 父类静态成员
	static int c;
};

// 声明并初始化静态变量
// 如果没有该操作 , 静态成员不可用
// 主要作用是告诉编译器为静态变量分配内存
int Parent::c = 10;

class Child : public Parent {
public:
	void print()
	{
		// 类内部使用 Parent::c 或 c 访问静态变量
		cout << "Parent::c = " << Parent::c << " , c = " << c << endl;
	}
};

int main() {

	Child child;
	// 打印初始状态的值
	child.print();

	// 直接使用 父类
	Parent::c = 20;
	child.print();

	// 通过对象访问父类静态成员
	child.c = 30;
	child.print();

	// 使用 子类名称::静态成员名 访问父类静态成员
	Child::c = 40;
	child.print();

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
}

执行结果 :

Parent::c = 10 , c = 10
Parent::c = 20 , c = 20
Parent::c = 30 , c = 30
Parent::c = 40 , c = 40
Press any key to continue . . .

在这里插入图片描述

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

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

相关文章

Java商城免费搭建 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城

涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

基于Java+SpringBoot+MyBatis+Vue前后端分离宠物领养设计与实现

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

34二叉树-BFS和DFS求树的深度

目录 LeetCode之路——104. 二叉树的最大深度 分析 解法一&#xff1a;广度优先遍历 解法二&#xff1a;深度优先遍历 总结 深度优先搜索 (DFS) 广度优先搜索 (BFS LeetCode之路——104. 二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的…

渗透实战|通过社工进网站后台

通过社工进网站后台 记录一次通过简单社工获取信息后进入后台的经过。打开思路&#xff0c;利用我们所有能够捕获的信息并串联起来。 0X0 开始&#xff1a; 打开网站发现是一个登录网站 随便输入账号密码&#xff0c;发现有用户名枚举&#xff1a; 0X1 获取icp备案企业&…

CSS高级的详细解析

CSS高级 目标&#xff1a;掌握定位的作用及特点&#xff1b;掌握 CSS 高级技巧 01-定位 作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 1.定位模式&#xff1a;position 2.边偏移&#xff1a;设置盒子的位置 left right top bottom 相对定位 posit…

四个小车相对导航集中式无迹卡尔曼滤波(fullyCN-EKF)

背景 二维情况下&#xff0c;四个小车各自有绝对定位&#xff08;GNSS&#xff09;&#xff0c;相互之间部分有相对定位&#xff08;UWB&#xff09;时&#xff0c;一个滤波器搞定四个小车的状态滤波。使用EKF。 建模 四个小车&#xff0c;每个有x、y两个轴&#xff0c;所以…

【网安大模型专题10.19】论文3:ChatGPT+自协作代码生成+角色扮演+消融实验

Self-collaboration Code Generation via ChatGPT 写在最前面朋友分享的收获与启发课堂讨论代码生成如何协作&#xff0c;是一种方法吗思路相同交互实用性 代码生成与自协作框架 摘要相关工作PPT学习大语言模型在代码生成方向提高生成的代码的准确性和质量&#xff1a;前期、后…

在 MaxPatrol SIEM 的帮助下,Positive Technologies 专家检测到影响超过 25 万用户的恶意软件

&#x1f468;‍&#x1f4bb; 从未经验证的来源下载软件&#xff1f;错误。从 torrent 跟踪器下载&#xff1f;致命错误。 八月份&#xff0c;我们的专家使用 MaxPatrol SIEM 在一家俄罗斯公司的网络中发现了异常活动。经过调查&#xff0c;CSIRT 团队&#xff08;Positive T…

useLayoutEffect和useEffect的区别

使用方式 这两个函数的使用方式其实非常简单&#xff0c;他们都接受一个函数一个数组&#xff0c;只有在数组里面的值改变的情况下才会再次执行 effect。所以对于使用方式我就不过多介绍了&#xff0c;不清楚的可以先参考官网 。 差异 useEffect 是异步执行的&#xff0c;而…

AOP和OOP有什么异同点

面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;和面向切面编程&#xff08;Aspect-Oriented Programming, AOP&#xff09;是两种不同的编程范式&#xff0c;它们各自有着独特的目标和实现方式。下面我将列出它们的一些主要异同点&#xff1a; 相同点 …

基于嵌入式Qt 开发板蜂鸣器(BEEP)

## 简介 在GEC6818开发板,开发板板载资源上有一个蜂鸣器(BEEP)。如下图原理图。此蜂鸣器直接接在一个 GPIO 上,并不是接在 PWM 上,管脚资源限制。 ​ ## 示例 想要控制这个蜂鸣器(BEEP),首先我们出厂内核已经默认将这个 LED 注册成了 gpio-leds 类型设备。 项目简…

Java中JVM、JRE和JDK三者有什么区别和联系?

任何语言或者软件的运行都需要环境。就像人要生活在空气中&#xff0c;鱼要活在水中&#xff0c;喜阴植物就不能放在阳光下暴晒一样&#xff0c;任何对象个体的存在都离不开其所需要的环境&#xff0c;编程语言亦是一样的。 java 语言的开发运行&#xff0c;也离不开 Java 语言…

EtherCAT从站转CclinkIE协议网关应用案例

远创智控的YC-ECT-CCLKIE网关&#xff0c;一款具有强大功能的ETHERCAT通讯网关。 它可以将ETHERCAT网络和CCLINK IE FIELD BASIC网络无缝连接起来。作为ETHERCAT总线中的从站&#xff0c;本网关可以接收来自ETHERCAT主站的数据&#xff0c;并将其传输到CCLINK IE FIELD BASIC网…

【蓝桥杯选拔赛真题01】C++参赛建议 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++参赛建议 一、题目要求 1、编程实现 2、输入输出 二、算法分析 <

鲸鱼优化算法(Whale Optimization Algorithm,WOA)剖析

鲸鱼优化算法 鲸鱼优化算法&#xff08;Whale Optimization Algorithm&#xff0c;WOA&#xff09;是 2016 年由澳大利亚格里菲斯大学的 Mirjalili 等提出的一种新的群体智能优化算法&#xff0c;鲸鱼优化算法是一种用于解决优化问题的新型优化技术。该算法包括三个运算符&…

脏牛提权 liunx

使用方法 Liunx 普通用户 内核版本 在版本里 我直接脏牛提权 有脚本查看内核版本 上传c脚本 编译 直接执行 获取高权限 提权 Liunx https://github.com/InteliSecureLabs/Linux Exploit Suggester 运行这个脚本 上传到客户端 https://github…

cola架构:cola源码中访问者模式应用浅析

目录 1.访问者模式简介 2.cola访问者模式应用 2.1 cola被访问者类图 2.2 cola访问者类图 我们知道&#xff0c;如果一个对象结构包含很多类型的对象&#xff0c;希望对这些对象实施一些依赖其具体类型的操作&#xff0c;但又避免让这些操作“污染”这些对象的类&#xff0c…

[ACTF2020 新生赛]Include

【解题思路】 1.打开链接 发现好东西&#xff0c;进一步分析。 2.分析页面 发现网页得到一个GET请求-->?fileflag.php 可以推断&#xff0c;要解答该题目需要获取 flag.php 的源代码. 将flag.php文件进行base64编码&#xff08;将网页源代码转换为Base64编码&#xff…