继承,切片,隐藏

定义:

子类(派生类)继承了父类(基类)的成员函数和成员变量(类层次的复用)

在这里插入图片描述

赋值

子类可以赋值给父类。父类不可以直接复制给子类
(不像不同内置类型的赋值要转化为临时变量)
不产生临时变量,直接切割子类的父类那一块,然后赋值给父类
在这里插入图片描述

class Person
{
protected:string _name; // 姓名string _sex;// 性别int _age; // 年龄
};class Student : public Person
{
protected:int _No; // 学号
};int main()
{Student st;Person pe = st;//子类截断赋值给父类return 0;
}

作用域(隐藏)

子类和父类虽然存在继承关系,但他们任然是两个不同的作用域,允许存在同名变量,函数。
子类会隐藏父类同名变量
在这里插入图片描述

成员函数名相同就构成隐藏
在这里插入图片描述

注意:实践当中尽量不要写同名变量,函数

子类的默认构造函数

不写:父类的那部分直接默认调用父类的构造函数,
父类的那部分就相当于自定义类型去调用自己的默认构造
在这里插入图片描述
写:子类的默认构造函数只可以初始化自己本身就有的,不能初始化继承的变量,继承的变量要由父类的默认构造函数自己来初始化
在这里插入图片描述

但是我们想要在实例化子类对象的时候,改变父类的成员变量的是该怎么办呢
——在子类的默认构造函数中调用父类的构造函数
在这里插入图片描述

且子类中的构造函数的构造顺序是,先父后子,因为父成员变量是继承下来的,声明顺序一定在前面

在这里插入图片描述

子类的拷贝构造

和切片联系
同样子类的拷贝构造不可以直接拷贝构造父类的那一部分,需要调用父类的拷贝构造,传参的时候直接把子类对象传过去,然后发生切片就行
在这里插入图片描述

赋值

赋值同样是先去调用父类的赋值(发生切片),在赋值子类本身的变量
在这里插入图片描述

析构函数

不同:析构函数会构成隐藏关系(因为析构函数会被特殊处理为同名函数)
所以在显示写子类函数的析构函数时,父类的析构函数是需要指定作用域的
在这里插入图片描述
但是有问题:因为子类的析构,是先子后父的
在这里插入图片描述

所以子类的析构中不用写父类的析构函数,如果写了就会先析构父类
所以不用写
在这里插入图片描述

继承与友元

父类的友元不是子类的友元
如果类也想使用这个友元函数的话,也需要在子类中声明这个友元

静态成员的继承——公有的

多继承

在这里插入图片描述
但是当菱形继承的时候就会出现二义性
在这里插入图片描述

解决办法,在会发生冗余的地方(腰部)继承的时候前面加 virtual
让二义级继承变量合成一个变量
在这里插入图片描述

class Person
{
public:string _name; // 姓名
};
class Student : virtual public Person
{
protected:int _num; //学号
};
class Teacher : virtual public Person
{
protected:int _id; // 职工编号
};
class Assistant : public Student, public Teacher
{
protected:string _majorCourse; // 主修课程
};
int main()
{Assistant a;a._name = "peter";return 0;
}

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

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

相关文章

MySQL产生死锁的根本原因及解决方法

概念 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程 一、 什么是死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺…

U盘上文件夹突然空了?掌握3个方法,轻松找回数据!

“我的u盘插上之后,不知道为什么就空了,里面所有的文件都没有了,有什么方法可以找回u盘里丢失的文件吗?” 在日常使用U盘的过程中,我们有时会遇到一个令人头疼的问题,U盘上的文件夹突然空了。这究竟是怎么回…

Windows系统安装MongoDB并结合内网穿透实现公网访问本地数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

DHCP部署与安全

在当今快速发展的网络世界中,动态主机配置协议(DHCP)扮演着至关重要的角色。这项技术不仅简化了网络管理,还提高了网络资源的利用率。本文旨在深入探讨DHCP的工作原理、优势以及如何有效部署和保护DHCP服务器。 一、DHCP作用 自…

Flutter的线程模型

在Flutter框架中,Embedder层负责把Flutter嵌入到各个平台上去,其所做的主要工作包括线程设置、渲染Surface设置,以及插件等。因此, Embedder负责线程的创建和管理,并且提供Task Runner给Engine使用。Engine则是负责提供…

Mysql深入学习 基础篇 Ss.05多表查询语法及案例

世界总是在推着我走,我自己一个人也能站稳 —— 24.3.7 一、多表关系 1.概述 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个…

Croissant:Google新推出的一个为机器学习准备的数据集元数据格式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

优雅应对商业谈判中的软件质疑

在软件开发的道路上,商业谈判是不可避免的一环。然而,当他人指出软件UI设计或功能存在问题时,如何优雅而有效地应对成为了关键。以下是一些建议,帮助你在类似情况中妥善处理,维护好你的软件开发声誉。 1. 保持冷静与专…

【易飞】易飞ERP自动审核程序功能

易飞ERP自动审核程序功能 一、 使用场景二、 操作说明三、 安装方式 一、 使用场景 OA系统集成 与第三方OA系统软件集成,在OA软件审核完成后,直接将ERP中的单据审核。MES系统集成 MES系统生成单据写入到易飞ERP中,并需要自动审核单据&#x…

Java流:释放顺序与并行数据处理的潜能

引言: Java Streams API 是 Java 编程语言中处理集合数据的重要工具,它提供了一种简洁、灵活的方式来操作数据,大大提高了代码的可读性和可维护性。Streams API 的出现为数据处理带来了革命性的变化,使得开发者能够以一种更为直观…

如何学习、上手点云算法(三):用VsCode、Visual Studio来debug基于PCL、Open3D的代码

写在前面 本文内容 以PCL 1.14.0,Open3D0.14.1为例,对基于PCL、Open3D开发的代码进行源码debug; 如何学习、上手点云算法系列: 如何学习、上手点云算法(一):点云基础 如何学习、上手点云算法(二):点云处理相…

数据挖掘案例分析

数据挖掘是指从大量数据中挖掘出有价值的信息和知识的过程。在当今信息爆炸的时代,各个领域都积累了大量的数据,而这些数据中蕴藏着许多有价值的信息,可以帮助企业做出决策、优化运营等。因此,数据挖掘应用已经成为了企业和组织中…

网络编程(3/7)

网络聊天室 服务器 #include <myhead.h> #define SER_IP "192.168.125.64" #define SER_PORT 6666 typedef struct Msg {char user[32]; //用户名int type; //1.登录、2.发消息、0.退出char text[1024]; //消息 } msg_t; typedef struct List {stru…

跟无神学AI之Tensorflow笔记搭建网络八股

虽然Pytorch在论文中使用较多&#xff0c;但是像Alphafold在蛋白质结构预测的模型&#xff0c;仍然是用Tensorflow写成&#xff0c;遂近期在学其中的语法。 本系列来自慕课北大软微曹健老师的Tensorflow笔记&#xff0c;摘选其中重要部分。 1.导包 2.定义训练集测试集和数据…

Android随手记

activity的生命周期 创建时 onCreate() - onStart() - onResume() - onPause() - onStop() - onDestroy() 切换时 a切换到b a.onCreate() - a.onStart() - a.onResume - a.onPause - b.onCreate() - b.onStart() - b.onResume() - a.onStop() b切换回a b.onPause() - a.onR…

C#与python交互(flask发送Get/Post请求)

先运行python&#xff0c;再运行C# **ps: 注意修改端口号**python发送Get/Post请求 # -*- coding: utf-8 -*- # Time : 2024/1/25 15:52 # Author : YY # File : post_test.py # Content&#xff1a;提交数据给客户端 from flask import Flask, request, jsonify, redirect…

华为OD机试 - 字符串统计(Java 2024 C卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&a…

Spring Boot 3项目集成Swagger3教程

Spring Boot 3项目集成Swagger3教程 &#x1f31f; 前言 欢迎来到我的小天地&#xff0c;这里是我记录技术点滴、分享学习心得的地方。&#x1f4da; &#x1f6e0;️ 技能清单 编程语言&#xff1a;Java、C、C、Python、Go、前端技术&#xff1a;Jquery、Vue.js、React、uni-…

智慧灯杆-智慧城市照明现状分析(2)

作为城市照明的主体,城市道路照明伴随着我国城市建设的高速发展,获得了快速的增长。国家统计局数据显示,从2004年至2014年,我国城市道路照明灯数量由1053.15万盏增加到3000万盏以上,年均复合增长率超过11%,城市道路照明行业保持持续快速发展的趋势。 近几年,随着中国路灯…

Lua学习笔记:分享一个用纯Lua写的位操作(异或)

前言 Lua在5.3版本之前没有进行位操作的运算符&#xff0c;如果想用一些位操作没有那么容易&#xff0c;可以使用BIt库来处理&#xff0c;这里分享几个使用纯Lua写的异或运算 local floor math.floor function bxor (a,b)local r 0for i 0, 31 dolocal x a / 2 b / 2if x…