首页 > 其他分享 >虚基类应用

虚基类应用

时间:2023-04-17 22:23:00浏览次数:29  
标签:应用 show int void beast animal 基类 fish

一、编写动物类animal,受保护数据成员name(名称、,string),age(年龄,int),公有函数成员void show(),输出“Animal,名称,年龄";公有派生鱼类fish加兽类beast,鱼类增加受保护数据
成员velocity(速度,int),公有函数成员void show(),输出“Fish,名称,年龄,速度";兽类增加受保护数据成员aPpetite(食量,int),公有函数成员void show(),输出"Beast,名称,年龄,食量";鱼类和兽类再公有两栖动物类amphibious,无添加数据成员,有公有函数成员voi d show(),输出“Fish,名称,年龄,速度"(第一行),"Beast,名称,年龄,食量“(第二行)

二、流程图

 

三、源代码。

Animal.h

#pragma once

#include <string>

#include <iostream>

using namespace std;

class animal

{

protected:

    string name;

    int age;

public:

    animal();

    animal(string name, int age);

    void setn();

    void seta();

    ~animal();

    void show();

};

 

Fish.h

#pragma once

#include "animal.h"

class fish : virtual public animal

{

protected:

    int velocity;

public:

    fish();

    fish(string nam, int ag, int v);

    ~fish();

    void show();

    void setv();

};

 

Beast.h

#pragma once

#include "animal.h"

class beast : virtual public animal

{

public:

    beast();

    ~beast();

    void show();

    beast(string n, int a, int ap);

    void setap();

protected:

    int appetite;

   

};

 

Amphibious.h

#pragma once

#include "beast.h"

#include "fish.h"

class amphibious : virtual public fish, virtual public beast

{

public:

    amphibious();

    amphibious(string n, int a, int ap, int v);

    ~amphibious();

    void show();

};

 

Animal.cpp

#include "animal.h"

 

 

animal::animal()

{

}

 

void animal::show()

{

    cout << "Animal " << name << ", " << age << endl;

}

animal::animal(string nam, int ag) :name(nam), age(ag)

{

 

}

animal::~animal()

{

}

void animal::setn()

{

    cin >> name;

}

void animal::seta()

{

    cin >> age;

}

Fish’.cpp

#include "fish.h"

 

 

fish::fish()

{

}

fish::fish(string nam, int ag, int v) :animal(nam, ag), velocity(v)

{

 

}

void fish::show()

{

    cout << "Fish," << name << " " << age << ", " << velocity << endl;

}

void fish::setv()

{

    cin >> velocity;

}

fish::~fish()

{

}

Beast.cpp

#include "beast.h"

 

 

beast::beast()

{

}

void beast::show()

{

    cout << "Beast," << name << " " << age << ", " << appetite<<endl;

}

beast::beast(string n, int a, int ap) :animal(n, a), appetite(ap){}

beast::~beast()

{

}

void beast::setap()

{

    cin >> appetite;

}

Amphibious.cpp

#include "amphibious.h"

 

 

amphibious::amphibious()

{

}

void amphibious::show()

{

    cout << "Fish " << name << " " << age << " " << velocity << endl;

    cout << "Beast " << name << " " << age << " " << appetite << endl;

}

 

amphibious::amphibious(string n, int a, int ap, int v) :fish(n, a, v), beast(n,a,ap)

{

 

}

amphibious::~amphibious()

{

}

源:

 

#include <iostream>

#include <string>

#include<iostream>

#include "amphibious.h"

using namespace std;

int main()

{

    fish a;

    beast b;

    a.setn();

    b.setn();

    a.seta();

    b.seta();

    a.setv();

    b.setap();

    a.show();

    b.show();

}

四、代码实现。

标签:应用,show,int,void,beast,animal,基类,fish
From: https://www.cnblogs.com/luoqingci/p/17327758.html

相关文章

  • 【学习笔记】SAM的应用
    command_block-SAM的应用感谢大佬的指点暴论:后缀数组什么辣鸡啊,再也不用后缀数组啦!加入SAM神教!CF802IFakeNews(hard)建出后缀自动机,可知一个串的出现次数即为endpos个数也是后缀链接树上的子节点个数。同一endpos集合的子集中子串长度连续且长度区间为\([maxlen(sam[c......
  • 常见的哈希算法和应用
    哈希算法经常会被用到,比如我们Go里面的map,Java的HashMap,目前最流行的缓存Redis都大量用到了哈希算法。它们支持把很多类型的数据进行哈希计算,我们实际使用的时候并不用考虑哈希算法的实现。而其实不同的数据类型,所使用到的哈希算法并不一样。DJB下面是C语言实现。初始值是5381,遍......
  • FinClip 与 uniapp:轻应用平台与前端开发框架
    原文地址juejin.cnFinClip背后的产品经理发现很多开发者或业务部门的朋友,在刚了解到FinClip的时候,都会好奇FinClip能解决怎样的问题,也会经常将FinClip与uni-app进行对比考虑二者的区别与优劣势。因此在本文中,FinClip的产品经理会和我们深入地探讨FinClip与uni-app之......
  • 分布式政企应用如何快速实现云原生的微服务架构改造
    随着数字化时代的快速发展,企业和组织正面临着如何在保持敏捷和灵活的同时,提高业务运营效率和降低成本的巨大挑战。为了应对这些挑战,许多企业开始采用面向服务的架构(SOA)和企业服务总线(ESB)来构建和集成复杂的应用系统。然而,随着云计算和微服务等新技术的出现,SOA/ESB架构也面临着一些......
  • 技术分享 | 如何迅速将分布式政企应用转型为云原生微服务架构
    在当今这个快速发展的数字化时代,企业和组织正面临着巨大的挑战,如何在保持敏捷和灵活的同时,提高业务运营效率和降低成本。为了应对这些挑战,许多企业开始采用面向服务的架构(SOA)和企业服务总线(ESB)来构建和集成复杂的应用系统。然而,随着云计算和微服务等新技术的出现,SOA/ESB架构也面临......
  • 关于 Fiori 应用里 SAP UI5 前端开发和 SEGW 后台 OData 服务开发的工作量比值问题
    我的知识星球有朋友向我提问:Jerry您好!请问一个中等复杂度的FioriUI5应用,前端代码用freestyle方式纯自己写,后端用SEGW开发Odata服务,前后端的工作量的比值大概是多少?需考虑调试测试的时间。关于这个问题,首先我们得界定,什么算是一个中等复杂度的Fiori应用?从前台视角来看,......
  • 交互式推荐在外卖场景的探索与应用
    外卖场景的用户停留时长低于传统电商,对用户实时需求的理解和反馈有更高的要求。针对业务问题,外卖推荐团队从2021年起开始持续投入,最终摸索出了一套适用于外卖场景的交互式推荐架构和策略,并取得了较好的收益。下文将详细介绍外卖首页Feed在搭建交互式推荐时遇到的挑战和解决思路。1.......
  • 企业应用可观测性利器!华为云CodeArts APM发布
    摘要:近日,华为云全链路应用性能管理服务CodeArtsAPM全新上线,提供端到端的全链路性能管理服务,涵盖前端监控、应用性能监控,全面拥抱开源生态。本文分享自华为云社区《企业应用可观测性利器!华为云CodeArtsAPM发布》,作者:华为云头条。当前,企业数字化转型和业务互联网化逐渐加深,企业......
  • 关于HTTP协议、爬虫技术和Socks5代理的一些重要概念和应用
      作为一名网络工程师和网络文章主编,我对网络技术和互联网发展趋势有着深刻的认识和了解。在本文中,我将重点探讨关于HTTP协议、爬虫技术和Socks5代理的一些重要概念和应用。  HTTP协议,即超文本传输协议,是目前互联网上最为常用的协议之一,它定义了客户端和服务器之间进行数据通......
  • Microsoft Azure中用户注册、应用注册、授权
    背景利用MicrosoftAzure中令牌授予流读取登录用户信息(UserInfo),实现应用的单点登录;1.用户注册此处用户注册,可以理解为一个管理员级别的用户注册;点击注册:Azure用户注册2.注册应用登录Azure后,左侧菜单“应用注册”中点“新注册”:注册过程中,clientId、“重定向URI(可选)......