C++:使用private继承

2023-10-27

在通常的程序设计中很少使用private继承,因为private继承其实相当于“根据某物实现”,而这种情况应该通过类成员变量的方式来实现。

那么private继承其实只有两个使用场景:

1.需要重写虚函数:

#include <iostream>
using namespace std;

class Wing{
public:
	virtual void fly()
	{
		cout<<"fly with wing"<<endl;
	}
};

class Plane : private Wing{
private:
	virtual void fly()
	{
		cout<<"fly with engine"<<endl;
	}
public:
	void doFly()
	{
		fly();
	}
};

int main(){
	Plane p;
	p.doFly();
	return 0;
}

类Wing提供了虚函数fly,但是类Plane需要重写fly函数,而Plane不是Wing,所以不能采用public继承,他基于Wing实现,所以采用private继承。

那么这种情况实际上可以采用另外一种更好的方式来实现:

#include <iostream>
using namespace std;

class Wing{
public:
	virtual void fly()
	{
		cout<<"fly with wing"<<endl;
	}
};

class Plane : private Wing{
private:
	cl
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:使用private继承 的相关文章

随机推荐

  • 华为0510 实习笔试

    1 栈数据合并 向一个空栈压入正整数 每当压入一个整数时 执行以下规则 设 栈顶至栈底整数依次编号为n1 n2 nx n1为最新压入的整数 1 如果n1 n2 则n1 n2全部出栈 压入新数据m m 2 n1 2 如果n1 n2 ny y的
  • Unity3D视图介绍

    unity视图介绍 Unity 3D 拥有强大的编辑界面 游戏开发者在创建游戏过程中可以通过可视化的编辑界面创建游戏 Unity 3D 的基本界面非常简单 主要包括菜单栏 工具栏以及五大视图 几个窗口就可以实现几乎全部的编辑功能 一 Uni
  • Windows环境下编译Assimp库生成Android可用的.so文件

    Windows环境下编译Assimp库生成Android可用的 so文件 前言 在做项目过程中需要使用Assimp这个3D模型读取库来读取obj格式的模型 因为项目是基于Android平台 采用NDK开发 所以就打算编译Assimp库并生成
  • 开关电源PFC电路原理详解及matlab仿真

    PFC全称 Power Factor Correction 意为 功率因数校正 PFC电路即能对功率因数进行校正 或者说能提高功率因数的电路 在电学中 功率因数PF指有功功率P 单位w 与视在功率S 单位VA 的比值 在初高中的电学中 我们
  • 计算机各外设的作用,计算机外设的功能是什么

    外部设备简称 外设 是指连在计算机主机以外的硬件设备 对数据和信息起着传输 转送和存储的作用 是计算机系统中的重要组成部分 随着我国计算机应用的迅速普及以及网络化 信息化应用的日益广泛 使市场对计算机外部设备的需求不断增长 从而拉动了我国计
  • 已知IP地址是192.168.5.121,子网掩码是255.255.255.248,试求网络地址和主机地址。...

    根据子网掩码的规则 将 IP 地址和子网掩码进行二进制 AND 操作 即可得到网络地址 IP 地址 11000000 10101000 00000101 01111001 192 168 5 121 子网掩码 11111111 111111
  • 负载均衡器技术Nginx和F5的优缺点对比

    nginx 一 nginx详解 nginx是一个被广泛使用的集群架构组件 我们有必要对它有足够的了解 下面将先认识nginx 包括应用场景 nginx基本架构 功能特性 并发模型以及配置说明 最后我们再总结下 为什么选择nginx的原因 1
  • 编译支付宝小程序 设置页面滚动时 overflow-y: auto不生效

    前言 由于公司业务调整 特意学习下uni项目框架 其实根据官方api就是实现很多功能 其实都是一些小坑 uni编译支付宝小程序 设置页面滚动时 overflow y auto不生效 解决 设置页面滚动时 不能设置overflow y aut
  • JavaScript教程-对象,文本和属性,方括号,计算属性,属性名称限制,in操作符,for..in,对象引用复制,深层克隆const修改

    对象 正如我们在 数据类型 一章学到的 JavaScript 中有八种数据类型 有七种原始类型 因为它们的值只包含一种东西 字符串 数字或者其他 相反 对象则用来存储键值对和更复杂的实体 在 JavaScript 中 对象几乎渗透到了这门编
  • 选择CentOS还是Ubuntu?

    Ubuntu和CentOS都是常见的Linux发行版 它们都有其优点和适用场景 Ubuntu是一种易于使用的操作系统 适合初学者 它具有良好的社区支持和广泛的软件库 因此很容易找到和安装需要的软件 Ubuntu还经常更新软件包 提供新功能和
  • UTXO介绍

    什么是UTXO 在比特币钱包当中 我们通常能够看到账户余额 然而在中本聪设计的比特币系统中 并没有余额这个概念 比特币余额 是由比特币钱包应用派生出来的产物 中本聪发明了UTXO交易模型 并将其应用到比特币当中 UTXO Unspent T
  • 怎样在html中写css样式,hbuilder的css怎么写

    HBuilder怎么查框架的css的属性 HBuilder在用框架时怎么查框架的css的属性 1 js中定义的变量和函数 在引用变量或函数时 可以跳转到定义的位置 包括HTML中同文件内部跳转及HTML向js文件的跳转 2 css中定义的样
  • Java开发工具JDK+IDEA+MySql+maven+tomact+sqlyong+postMan+redis+RMQ+node

    开发工具 JDK 1 8 含1 8中文API 链接 https pan baidu com s 1t43L4nxCqzmCIhKp JZvIg 提取码 9woy 开发工具 IDEA 含解密文档 链接 https pan baidu com
  • Unity普通项目升级为URP通用渲染管线(图文详解)

    Unity普通项目升级为URP通用渲染管线 前言 一 导入Universal RP 二 创建Pipeline Asset 三 设置Graphics 四 更改Rendering 五 素材升级URP 总结 版权声明 前言 我的unity版本是2
  • RASP解决Java安全问题探讨

    Java 语言在应用场景下有更健全的性能 对于很多企业而言是应用程序编写选择中的 Plan A 树大招风 这也使得它成为攻击者重点关注的对象 在软件开发的过程中 程序员通常会引入第三方库提高自己的研发效率 但开源代码的安全性和可靠性很难保证
  • 租用Topaz Video Enhance AI

    智星云算力平台已认证帐号在智星云租赁并使用Topaz Video Enhance AI 1 租用win10渲染镜像 2 设备管理器 查看显卡状态 3 安装 Topaz Video Enhance AI 软件 4 在 preferences
  • ATM(异步传输模式)是什么?

    异步传输模式 ATM 也称为信元中继 在固定大小的信元中传输数据 通过光纤或双绞线电缆 高速交换 在OSI模型的数据链路层 第2层 运行基于ITU T宽带综合业务数字网络 B ISDN 标准的网络技术 该标准是电信业开发的 自动取款机可以同
  • 【区块链论文整理】SIGMOD 篇 (二)

    SIGMOD Special Interest Group On Management Of Data 是数据库三大顶会之一 近几年也发表了不少水平很高的文章 本文主要针对SIGMOD会议中区块链相关的论文进行简单整理 ACM SIGMOD
  • 运算符之 --- 取余运算 %

    取模运算 javascript取模运算是一个表达式的值除以另一个表达式的值 并返回余数 取模在js里就是取余数的意思 a b 是求余数 a b 是求商 Math abs x 是求x的绝对值 12除以5 2 余数是2 即5 2 2 12 所以
  • C++:使用private继承

    在通常的程序设计中很少使用private继承 因为private继承其实相当于 根据某物实现 而这种情况应该通过类成员变量的方式来实现 那么private继承其实只有两个使用场景 1 需要重写虚函数 include