c++继承机制

news2025/6/27 23:55:42

4-4继承(带参构造)_哔哩哔哩_bilibili

继承机制

4.1继承与派生的概念

继承  是指在已有类或称为基类的基础上创建新类,这个新类就是派生类。

单继承:由一个基类派生的类

 多继承:由两个或多个基类派生的类

 派生类的声明

默认是private的

  

//继承机制
#include<iostream>
#include<string>
using namespace std;
class person
{
    string name;
    int age;
    public:
        void setPerson(string n,int a)
        {
            name = n;
            age = a;
        }
        void showPerson()
        {
            cout<<"name:"<<name<<endl;
            cout<<"age:"<<age<<endl;    
        }
};
class student:public person  //student是继承自person的
{
    int grade;
    public:
        void setStudent(string n,int a,int g)
        {
            setPerson(n,a);
            grade = g;
        }
        void showStudent()
        {
            showPerson();
            cout<<"grade:"<<grade<<endl;
        }
};
int main()
{
    student s;
    s.setStudent("amrk",13,5);
    s.showStudent();
    return 0;
}

4.2派生类的访问控制

   

private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.
protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问
public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问
注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数

C++中public、protected、private的区别_风雨也无晴的博客-CSDN博客

protect不能通过对象直接访问

可以看出name,age在基类中被定义在不同

访问时的权限也有区别。

 4.3继承之下的构造函数与析构函数

 

4.4多继承

 继承案列:

 StudentHasjob继承Student和Empolyee,此时Student和Employee是基类,StudentHasjob是派生类。

 使用的方法:

job基类定义为protected,继承方式是public,派生类中的是protected。可以被派生类去访问

 使用。

4.6虚基类和赋值兼容性

4.6.1基类的访问:成员名限定

 两个基类中的name都可以进行访问,出现了冲突,指定要访问的成员。

4.6.2虚基类

派生类出现了套娃

解决方法:虚基类

在定义Student和employee类的时候在前面加上virtual

 在创建虚基类的派生时,必须在初始化成员列表中,对虚基类构造函数调用。

此时,Student和employee类就成为了传说中的虚基类

 虚基类的继承就是StudentHasjob,不要忘了调用一下基类person(name,age),和虚基类Student和employee

4.6.4赋值兼容规则

基类shape

继承类circle

 使用规则

 

 

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

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

相关文章

【Windows】【Linux】---- Java证书导入

问题&#xff1a; PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 无法找到请求目标的有效证书路径 一、Windows—java证书导入 1、下载证书到本地&#xff08;以下…

理解Transformer

Transformer总体框架&#xff1a; 1、Encoder Encoder由 6 层组成&#xff0c;每一层包括两个子层&#xff1a;第一层 multi-head self-attention 层&#xff08;8个heads&#xff09;&#xff0c;第二层是一个简单的全连接前馈网络。在每个子层后都接了一个残差连接以及归一化…

Linux命令行安装Oracle19c

安装 下载 从 Oracle官方下载地址 需要的版本&#xff0c;本次安装是在Linux上使用yum安装&#xff0c;因此下载的是RPM。另外&#xff0c;需要说明的是&#xff0c;Oracle加了锁的下载需要登录用户才能安装&#xff0c;而用户是可以免费注册的&#xff0c;这里不做过多说明。 …

JavaScript简述

JavaScript简述JavaScript简介JS用法JavaScript输出window.alert&#xff08;&#xff09;document.write&#xff08;&#xff09;innerHTML&#xff08;&#xff09;console.log&#xff08;&#xff09;JavaScript简介 JavaScript是脚本语言&#xff0c;可用于HTML和web。 …

Vue项目中引入高德地图步骤详解

高德地图API官网&#xff1a;高德开放平台 | 高德地图API。 目录 一、案例效果 二、开发准备 1. 注册高德开放平台账号 2. 创建应用添加 key 值 三、项目中使用地图组件 1. npm 获取高德地图 API 2.在项目中新建 MapContainer.vue 文件&#xff0c;用作地图组件。 3.在…

SpringBoot-运维篇

在运维实用篇中&#xff0c;是玩转配置&#xff0c;为开发实用篇中做各种技术的整合做好准备工作。与开发实用篇相比&#xff0c;运维实用篇的内容显得略微单薄&#xff0c;并且有部分知识模块在运维实用篇和开发实用篇中都要讲一部分&#xff0c;这些内容都后置到开发实用篇中…

python实现PCA降维画分类散点图并标出95%的置信区间

此代码以数据集鸢尾花为例&#xff0c;对其使用PCA降维后&#xff0c;绘制了三个类别的样本点和对应的置信圆&#xff08;即椭圆&#xff09;。先放效果图。 下面是完整代码&#xff1a; from matplotlib.patches import Ellipsedef plot_point_cov(points, nstd3, axNone, **…

Windows环境搭建Android开发环境-Android Studio/Git/JDK

Windows环境搭建Android开发环境-Android Studio/Git/JDK 因为休假回来后公司的开发环境由Ubuntu变为了Windows&#xff0c;所以需要重新配置一下开发环境。 工作多年第一次使用Windows环境进行开发工作&#xff0c;作次记录下来。 一、 Git安装 1.1git 标题软件下载 网址&…

CISA 告诉机构优先考虑什么以满足网络安全日志要求

随着联邦机构努力满足 2021 年发布的网络安全记录要求&#xff0c;政府的主要网络安全部门发布了一般指南&#xff0c;以帮助机构领导者优先考虑可能是昂贵且资源密集型实施的部分内容。 管理和预算办公室于 2021 年 8 月发布了一份备忘录&#xff0c;要求各机构创建和维护某些…

linux下nm,objdump和ldd三大工具使用

linux下进行C/C开发时经常需要使用nm&#xff0c;objdump&#xff0c;ldd工具来分析定位问题&#xff0c;本篇文章就对其做个总结&#xff1a; 1.测试程序 TestSo.h #pragma once #include <iostream>extern "C" int CTypeAdd(int x, int y); extern "…

关于Git分支高级合并的一些笔记整理

写在前面 分享一些 Git 高级合并的笔记博文为《Pro Git》读书笔记整理感谢开源这本书的作者和把这本书翻译为中文的大佬们理解不足小伙伴帮忙指正&#xff0c;书很不错&#xff0c;感兴趣小伙伴可以去拜读下 傍晚时分&#xff0c;你坐在屋檐下&#xff0c;看着天慢慢地黑下去&a…

传统图像处理方法实现车辆计数

本文通过传统OpenCV图像处理方法实现单向行驶的车辆计数。用于车辆检测的视频是在https://www.bilibili.com/video/BV1uS4y1v7qN/?spm_id_from333.337.search-card.all.click里面下载的。 思路一&#xff1a;来自B站某教程。大致是在视频中选取一窄长条区域&#xff0c;统计每…

【软件测试面试题】项目经验?资深测试 (分析+回答) 我不信你还拿不到offer......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 在面试过程中&#…

Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作

场景 Sqlite数据库 SQLite是一个进程内的库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 它是一个零配置的数据库&#xff0c;这意味着与其他数据库不一样&#xff0c;您不需要在系统中配置。 就像其他数据库&#xff0c;SQLite 引擎不…

day03

文章目录一、盒子模型1. 基础概念2. 外边距3. 边框1) 边框实现2) 单边框设置3) 网页三角标制作4) 圆角边框5) 轮廓线2. 内边距3. 盒阴影4. 盒模型概念5. 标签最终尺寸的计算5. 标签最终尺寸的计算一、盒子模型 1. 基础概念 ​ 盒子模型分别由外边距、边框、内边距和标签内容组…

【Datawhale图机器学习】图神经网络的表示能力

图神经网络的表示能力 GNN理论 GNN有多强大 已经提出了许多GNN模型&#xff08;例如&#xff0c;GCN、GAT、GraphSAGE、设计空间&#xff09;。这些GNN模型的表达能力什么&#xff1f; 表达、学习、区分、拟合如何设计一个最具表现力的GNN模型 一个GNN层 多个GNN层 GNN…

在小公司工作3年,从事软件测试6年了,才发现自己还是处于“初级“水平,是不是该放弃....

金三银四面试季&#xff0c;相信大家都想好好把握住这次机会拿到心仪的offer&#xff0c;今天就给大家分享我面试经历及总结&#xff0c;文章最后我还会分享一些自己的面试经验还有面试宝典&#xff0c;希望对程序媛们和程序猿们都能有所帮助~ 市场分析 现在的市场环境确实不大…

基本系统性质

系统的记忆特性 定义&#xff1a;对任意的输入信号&#xff0c;如果每一个时刻系统的输出信号值仅取决于该时刻的输入信号值&#xff0c;这个系统就是无记忆系统 接下来请看一看下面那些是记忆系统&#xff0c;哪些是无记忆系统。 非常简单&#xff0c;只有第一个和最后一个是…

LeetCode202 快乐数

题目&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a;对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果这个过程 结果…

vue 3.0组件(下)

文章目录前言&#xff1a;一&#xff0c;透传属性和事件1. 如何“透传属性和事件”2.如何禁止“透传属性和事件”3.多根元素的“透传属性和事件”4. 访问“透传属性和事件”二&#xff0c;插槽1. 什么是插槽2. 具名插槽3. 作用域插槽三&#xff0c;单文件组件CSS功能1. 组件作用…