C++零碎记录(九)

news2025/1/10 16:54:59

15. 继承

15.1 继承简洁

① 继承是面向对象的三大特性之一。

② 定义类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候,就可以考虑利用继承技术,减少重复代码。

15.2 普通实现

#include <iostream>
using namespace std;
#include<string>

//打印输出类
class Java
{
public:
    void header()
    {
        cout << "首页、公开课、登陆、注册...(公共头部)" << endl;
    }
    void footer()
    {
        cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
    }
    void left()
    {
        cout << "Java、Python、C++....(公共分类列表)" << endl;
    }
    void content()
    {
        cout << "Java学科视频" << endl;
    }
};

class Python
{
public:
    void header()
    {
        cout << "首页、公开课、登陆、注册...(公共头部)" << endl;
    }
    void footer()
    {
        cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
    }
    void left()
    {
        cout << "Java、Python、C++....(公共分类列表)" << endl;
    }
    void content()
    {
        cout << "Python学科视频" << endl;
    }
};

class CPP
{
public:
    void header()
    {
        cout << "首页、公开课、登陆、注册...(公共头部)" << endl;
    }
    void footer()
    {
        cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
    }
    void left()
    {
        cout << "Java、Python、C++....(公共分类列表)" << endl;
    }
    void content()
    {
        cout << "C++学科视频" << endl;
    }
};

void test01()
{
    cout << "Java下载视频页面如下:" << endl;
    Java ja;
    ja.header();
    ja.footer();
    ja.left();
    ja.content();

    cout << "........................" << endl;
    cout << "Python下载视频页面如下:" << endl;
    Python py;
    py.header();
    py.footer();
    py.left();
    py.content();

    cout << "........................" << endl;
    cout << "C++下载视频页面如下:" << endl;
    CPP cpp;
    cpp.header();
    cpp.footer();
    cpp.left();
    cpp.content();
}

int main()
{
    test01();
    
    system("pause");

    return 0;

}

运行结果:

  • Java下载视频页面如下:
  • 首页、公开课、登陆、注册...(公共头部)
  • 帮助中心、交流合作、站内地图...(公共底部)
  • Java、Python、C++....(公共分类列表)
  • Java学科视频
  • ........................
  • Python下载视频页面如下:
  • 首页、公开课、登陆、注册...(公共头部)
  • 帮助中心、交流合作、站内地图...(公共底部)
  • Java、Python、C++....(公共分类列表)
  • Python学科视频
  • ........................
  • C++下载视频页面如下:
  • 首页、公开课、登陆、注册...(公共头部)
  • 帮助中心、交流合作、站内地图...(公共底部)
  • Java、Python、C++....(公共分类列表)
  • C++学科视频
  • 请按任意键继续. . .

15.3 继承实现

#include <iostream>
using namespace std;
#include<string>

//打印输出类
class BasePage
{
public:
    void header()
    {
        cout << "首页、公开课、登陆、注册...(公共头部)" << endl;
    }
    void footer()
    {
        cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;
    }
    void left()
    {
        cout << "Java、Python、C++....(公共分类列表)" << endl;
    }
};

// 继承的好处:减少重复代码
// 语法:class 子类:继承方式 父类
// 子类 也称为 派生类
// 父类 也称为 基类

//Java页面
class Java:public BasePage   //继承了BasePage,把BasePage里面的内容全部拿到手了
{
public:
    void content()
    {
        cout << "Java学科视频" << endl;
    }
};

//Python页面
class Python :public BasePage   //继承了BasePage,把BasePage里面的内容全部拿到手了
{
public:
    void content()
    {
        cout << "Python学科视频" << endl;
    }
};

//C++页面
class CPP :public BasePage   //继承了BasePage,把BasePage里面的内容全部拿到手了
{
public:
    void content()
    {
        cout << "CPP学科视频" << endl;
    }
};

void test01()
{
    cout << "Java下载视频页面如下:" << endl;
    Java ja;
    ja.header();
    ja.footer();
    ja.left();
    ja.content();

    cout << "........................" << endl;
    cout << "Python下载视频页面如下:" << endl;
    Python py;
    py.header();
    py.footer();
    py.left();
    py.content();

    cout << "........................" << endl;
    cout << "C++下载视频页面如下:" << endl;
    CPP cpp;
    cpp.header();
    cpp.footer();
    cpp.left();
    cpp.content();
}

int main()
{
    test01();
    
    system("pause");

    return 0;

}

运行结果:

  • Java下载视频页面如下:
  • 首页、公开课、登陆、注册...(公共头部)
  • 帮助中心、交流合作、站内地图...(公共底部)
  • Java、Python、C++....(公共分类列表)
  • Java学科视频
  • ........................
  • Python下载视频页面如下:
  • 首页、公开课、登陆、注册...(公共头部)
  • 帮助中心、交流合作、站内地图...(公共底部)
  • Java、Python、C++....(公共分类列表)
  • Python学科视频
  • ........................
  • C++下载视频页面如下:
  • 首页、公开课、登陆、注册...(公共头部)
  • 帮助中心、交流合作、站内地图...(公共底部)
  • Java、Python、C++....(公共分类列表)
  • CPP学科视频
  • 请按任意键继续. . .

16. 三种继承改变权限

① 继承的语法:class 子类:继承方式 父类

② 继承方式一共有三种:

1. 公共继承
2. 保护继承
3. 私有继承

③ 不同的继承方式,父类中的变量被继承后,权限相应的得到了改变,如下图所示。

#include <iostream>
using namespace std;
#include<string>

//打印输出类
class Base1
{
public:
    int m_A;
protected:
    int m_B;
private:
    int m_C;
};

//公共继承
class Son1:public Base1
{
public:
    void func()
    {
        m_A = 10; //父类中的公共权限成员 到子类中依然是公共权限
        m_B = 10; //父类中的保护权限成员 到子类中依然是保护权限
        //m_C = 10; //父类中的私有权限成员 子类访问不到

    }
};

void test01()
{
    Son1 s1;
    s1.m_A = 100;  //公共权限,类内能访问,类外也能访问
    //s1.m_B = 100;  //保护权限,类内能访问,类外不能访问
}

//保护继承
class Son2:protected Base1
{
public:
    void func()
    {
        m_A = 10; //父类中的公共权限成员 到子类中变为保护权限
        m_B = 10; //父类中的保护权限成员 到子类中依然是保护权限
        //m_C = 10; //父类中的私有权限成员 子类访问不到

    }
};


void test02()
{
    Son2 s2;
    //s2.m_A = 100;  //保护权限,类内能访问,类外不能访问
    //s2.m_B = 100;  //保护权限,类内能访问,类外不能访问
}

//私有继承
class Son3:private Base1
{
public:
    void func()
    {
        m_A = 10; //父类中的公共权限成员 到子类中变为私有权限
        m_B = 10; //父类中的保护权限成员 到子类中变为私有权限
        //m_C = 10; //父类中的私有权限成员 子类访问不到

    }
};

void test03()
{
    Son3 s3;
    //s3.m_A = 100;  //私有权限,类内能访问,类外不能访问
    //s3.m_B = 100;  //私有权限,类内能访问,类外不能访问
}

int main()
{

    system("pause");

    return 0;

}

运行结果:

  • 请按任意键继续. . .

链接:https://www.zhihu.com/question/437657370/answer/1692846096

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

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

相关文章

windows启动自动运行应用

运行winR命令输入 shell:startup回车&#xff0c;进入下面文件夹 将所要开机就运行的应用程序放入问价夹中间重新启动就可以了 按 windows键&#xff0c; 搜索startup&#xff0c;可以对所有程序是否需要开机运行进行设置

蓝桥杯打卡Day6

文章目录 N的阶乘基本算术整数查询 一、N的阶乘OI链接 本题思路&#xff1a;本题是关于高精度的模板题。 #pragma GCC optimize(3) #include <bits/stdc.h>constexpr int N1010;std::vector<int> a; std::vector<int> f[N];std::vector<int> mul(in…

集合框架1

目录 一、认识集合 二、Collection接口 三、Iterable接口 四、Queue接口 4.1Queue接口概述 4.2 Deque接口 五、List接口 5.1 使用ArrayList类动态存储数据 5.1.1 ArrayList定义类有两个私有属性 5.1.2 构造方法 5.1.3 操作数据 5.2 使用LinkedList类动态存储数据 …

props验证指的是什么?Vue组件的props验证

props验证指的是在封装组件时对外界传递过来的props 数据进行合法性的校验&#xff0c;从而防止数据不合法的问题。但使用数组类型的props节点有一个缺点&#xff0c;既无法为每个prop指定具体的数据类型。 1.对象类型的props节点 使用对象类型的props 节点&#xff0c;可以对每…

HCIE-HCS规划设计搭建

以实验环境为例&#xff1a;共计6台服务器2288H V5&#xff0c;1台存储 OceanStor 5110 V5&#xff0c;2台万兆48口交换机&#xff0c;1台千兆24口交换机。 Controller&#xff1a;3台控制节点&#xff0c;2颗cpu&#xff0c;每颗cpu24核心/48线程&#xff0c;每台内存1TB&…

Advanced FX Creator v2.6e多种粒子特效与光照资源

这是一个包含动态粒子魔法2和全局照明效果的特效资源,300多个预制件,包括各种先进的效果!!! 下载链接在底部

简单描述下微信小程序的目录结构

微信小程序的目录结构通常包括以下主要部分&#xff1a; 这是一个典型的微信小程序的目录结构&#xff0c;具体项目可能会有一些变化&#xff0c;但通常都包含类似的核心文件和文件夹。小程序开发者需要按照这个结构组织项目代码和资源 app.js&#xff1a;小程序的主入口文件&a…

keep-alive缓存三级及三级以上路由

需求需要缓存这个出入记录&#xff0c;当tab切换时不重新加载&#xff0c;当刷新页面时&#xff0c;或把这个关闭在重新打开时重新加载如图&#xff1a; &#xff08;我这里用的是芋道源码的前端框架) keep-alive 1、include 包含页面组件name的这些组件页面&#xff0c;会被…

数字化时代,企业风险管理能力策略探析

“提质增效”已经成为了当前所有企业面临的共同话题&#xff0c;而在“提质增效”的过程中&#xff0c;提升自身的风险管理能力是其中非常关键的一项内容&#xff0c;因此&#xff0c;对提高企业风险管理能力的策略进行分析有着较为重要的意义。 一、当前企业风险管理存在的相…

2023 CCF国际AIOps挑战赛,报名倒计时!|截止时间9月15日

智能运维领域最具影响力的专业赛事——2023 CCF国际AIOps挑战赛&#xff0c;自报名启动以来已收到230余支队伍报名&#xff0c;约600余位选手参与本次挑战赛。本次大赛的报名截止时间为9月15日&#xff0c;目前报名已经进入倒计时&#xff0c;请选手们抓紧最后时间报名参赛&…

matlab 13折线法数据量化编码与解码

(1)脉冲编码调制简介 模拟信号抽样后变成时间离散的信号,经过量化后,此抽样信号才能成为数字信号。分析可知:最简单的均匀量化器对于小输入信号很不利。为了改善小信号时的信号量噪比,在实际应用中常采用非均匀量化。 非均匀量化时,量化间隔随信号抽样值的不同而变化。信号…

存储过程与游标

图片描述 记录开发实例&#xff08;外包供应商排名报表数据-存储过程&#xff09; -- 外包供应商排名报表数据 ALTER PROCEDURE p_getOutsourceSupplierRankingDataASBEGIN-- 每天更新数据,开启游标 DECLARE years VARCHAR(8) DECLARE supplierCode VARCHAR(64) DECLARE suppl…

JAVA 从入门到起飞 day8 面向对象01

1.面向对象的介绍 老师的讲解&#xff1a; 面向&#xff1a;就相当于拿找 对象&#xff1a;能干活的东西 面向对象编程&#xff1a;拿东西过来做对应的事 我的理解: 让我们通过一个比喻来了解 JAVA 中的面向对象思想。 想象一下你正在建一座房子&#xff1a; 1. **类&#…

【开放视觉】AI人像特效之「更快、更高、更强的互娱换脸解决方案」

写真开源AIGC推荐插播&#xff1a; 最新 FaceChain支持多人合照写真功能&#xff0c;项目信息汇总&#xff1a;ModelScope 魔搭社区 github开源直达&#xff08;觉得有趣的点个star哈。&#xff09;&#xff1a;https://github.com/modelscope/facechain 正文&#xff1…

如何实现数据流畅转换?火山引擎ByteHouse推出ELT能力

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 在数据分析场中&#xff0c;企业使用的数据通常具备来源多样化的特点&#xff0c;如支付交易记录、用户行为等&#xff0c;且数据格式各异&#xff0c;有的为行式存…

海南大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​

海南大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​

分享一下鲜花店做微信小程序开发的重要性

随着移动互联网的普及&#xff0c;微信小程序作为一种新型的应用形态&#xff0c;正在改变着人们的生活方式和消费习惯。对于鲜花店来说&#xff0c;开发微信小程序尤为重要&#xff0c;因为它能为商家带来诸多优势和便利。本文将详细探讨鲜花店做微信小程序开发的重要性。 首先…

Mysql->Hudi->Hive

一 准备 1.启动集群 /hive/mysql start-all.sh2.启动spark-shell spark-shell \--master yarn \ //--packages org.apache.hudi:hudi-spark3.1-bundle_2.12:0.12.2 \--jars /opt/software/hudi-spark3.1-bundle_2.12-0.12.0.jar \--conf spark.serializerorg.apache.spark.…

二维码智慧门牌管理系统:强化地址管理,推动政府业务协同

文章目录 前言一、二维码智慧门牌管理系统的特点二、优势与效果 前言 随着科技的迅猛发展&#xff0c;我们的生活正在经历着前所未有的变革。在这个过程中&#xff0c;地址门牌的管理显得尤为重要。为了更好地管理地址资源&#xff0c;政府各部门需要实现标准地址资源共享交换…

uniapp 小程序 父组件调用子组件方法

答案&#xff1a;配合小程序API > this.selectComponent("")&#xff0c;来选择组件&#xff0c;再使用$vm选择组件实例&#xff0c;再调用方法&#xff0c;或者data 1 设置组件的id,如果你的多端&#xff0c;请跟据情况设置ref,class,id&#xff0c;以便通过小…