// doesn‘t exist

-

// doesn't exist

13.3

赋给派生类引用,将发生什么情况呢?派生类引用能够为基对象调用派生类方法,这样做将出现问题。例
如,将RatedPlayer :: Rating()方法用于TableTennisPlayer对象是没有意义的,因为TableTennisPlayer对象没
有rating成员。
如果基类引用和指针可以指向派生类对象,将出现一些很有趣的结果。其中之一是基类引用定义的函
数或指针参数可用于基类对象或派生类对象。例如,在下面的函数中:
void Show (const TableTennisPlayer & rt)

cout << "Name: ":
rt.Name():
cout << "\nTable: ";
if (rt. HasTable () )
Cout << "yes\n":
else
cout << "no\n":

形参rt是·个基类引用,它可以指向基类对象或派生类对象,所以可以在Show()中使用 TableTennis
参数或Ratedplayer 参数:
TableTennisPlayer playerl |"Tara". "Boomdea", false) :
RatedPlayer rplayer1 (1140. "Mallory". "Duck", true) :
Show (player1) : // works with TableTennisPlayer argument
Show |rplayerl) : // works with RatedPlayer argument
对于形参为指向基类的指针的函数,也存在相似的关系。它可以使用基类对象的地址或派生类对象的
地址作为实参:
void Wohs (const TableTennisPlayer * pt); // function with pointer parameter

TableTennisPlayer playerl("Tara", "Boomdea", false);
RatedPlayer rplayer1 (1140, "Mallory", "Duck", true) ;
Wohs (6playerl); // works with TableTennisPlayer * argument
Wohs (&rplayer1); // works with RatedPlayer * argument
引用兼容性属性也能够将基类对象初始化为派生类对象,尽管不那么直接。假设有这样的代码:
RatedPlayer olafl (1840. "Olaf", "Loaf", true) ;
TableTennisPlayer olaf2 lolafl) ;
要初始化olaf2,匹配的构造函数的原型如下:
TableTennisPlayer (const RatedPlayer &) :
类定义中没有这样的构造函数,但存在隐式复制构造函数:
// implicit copy constructor
TableTennisPlayer (const TableTennisPlayer &) :
形参是基类引用,因此它可以引用派生类。这样,将olaf2初始化为olafl时,将要使用该构造函数,
它复制firstname、lastname 和hasTable 成员。换句话来说,它将olaf2初始化为嵌套在RatedPlayer对象olaf1
中的TableTennisPlayer 对象。
同样,也可以将派生对象赋给基类对象:
RatedPlayer olafl (1840. "Olaf", "Loaf", true) :
TableTennisPlayer winner:
winner = olafl: // assign derived to base object
在这种情况下,程序将使用隐式重载赋值操作符:
TableTennisPlayer & operator= (const TableTennisPlayer &) const:
基类引用指向的也是派生类对象,因此olafl的基类部分被复制给winner。

继承-is-a关系

派生类和基类之间的特殊关系是基于C++继承的底层模型的。实际上,C++有3种继承方式:公有继

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

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

相关文章

webpack 中的loader 和plugin的区别

Loader: 作用&#xff1a; Loader 用于在模块加载时对文件进行转换。它是一个转换器&#xff0c;将文件从一种形式转换为另一种形式&#xff0c;例如&#xff0c;将 ES6 语法的 JavaScript 文件转换为能够在浏览器中运行的普通 JavaScript。使用场景&#xff1a; Loader通常被配…

Addressables(2) ResourceLocation和AssetReference

IResourceLocation var op Addressables.LoadResourceLocationsAsync(key); var result op.WaitForCompletion(); 把加载的Key塞进去&#xff0c;不难看出&#xff0c;IResourceLocation可以用来获得资源的详细信息 很适合用于更新分析&#xff0c;或者一些检查工具 AssetR…

Eureka使用详解

介绍主要特点主要功能与常用服务注册中心的比较Eureka与Zookeeper的区别和联系Eureka与Nacos的区别与联系Eureka与Consul的区别与联系 安装部署Eureka与CAP理论Eureka实现实时上下线Eureka常用注解Eureka架构模式 介绍 Eureka是一个基于REST的服务&#xff0c;主要用于AWS云中…

logstack 日志技术栈-05-windows10 安装 Elasticsearch elasticsearch-8.11.1 实战笔记

安装 Elasticsearch elasticsearch-8.11.1 下载 访问 Elasticsearch 下载页面 解压下载的压缩文件到你选择的目录。 运行 进入 Elasticsearch 目录&#xff0c;运行 bin/elasticsearch.bat 启动 Elasticsearch。 验证 elaasticsearch的默认访问路径是localhost:9200&…

HTTP 认证方式

目录 1.HTTP认证方式2.Python中 HTTP 认证方式的使用 本文主要介绍HTTP 认证方式有哪些及在Python中的基本使用方式。 1.HTTP认证方式 HTTP认证方式主要有以下几种&#xff1a; 基本认证&#xff08;Basic Authentication&#xff09;&#xff1a;客户端将用户名和密码进行B…

一文读懂「RAG,Retrieval-Augmented Generation」检索增强生成

Retrieval-Augmented Generation&#xff08;RAG&#xff09;作为机器学习和自然语言处理领域的一大创新&#xff0c;不仅代表了技术的进步&#xff0c;更在实际应用中展示了其惊人的潜力。 RAG结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#…

Flutter 页面嵌入 Android原生 View

前言 文章主要讲解Flutter页面如何使用Android原生View&#xff0c;但用到了Flutter 和 Android原生 相互通信知识&#xff0c;建议先看完这篇讲解通信的文章 Flutter 与 Android原生 相互通信&#xff1a;BasicMessageChannel、MethodChannel、EventChannel-CSDN博客 数据观…

pdf拆分成各个小pdf的方法

背景:由于某些缘故,一个大的pdf需要拆分成页数少的pdf,或者pdf需要去掉指定页,那么就有必要对pdf进行重新编辑,这里需要用到一个库,直接进行操作即可。 当使用Python时,可以使用PyMuPDF库来拆分PDF文件。以下是一个示例代码, import fitz # PyMuPDF def split_pdf(i…

禅道的安装及使用流程

目录 一.安装 1.下载禅道安装包​http://www.zentao.net/ 2.选择禅道开源版 3.选择需要下载的安装包&#xff08;注意&#xff1a;下载的安装包必须放在根目录&#xff0c;不能移动&#xff09; 4.将下载的安装包双击进行解压&#xff1b;解压后的文件为d:\xampp&#xff1b…

sfml使用opengl着色器实现2d水面波浪

SFML中使用GLSL着色器来绘制水波。 效果 代码 #include <SFML/Graphics.hpp> #include <iostream>int main() {const int WIDTH = 800;

(南京观海微电子)——TCON介绍

TCON板详细介绍 TCON又称&#xff1a;逻辑板&#xff0c;控制板&#xff0c;在液晶电视里的作用和CRT中的视放板相当&#xff0c;但有本质的区别&#xff0c;逻辑板不是一个纯粹的信号放大器&#xff0c;它输入是LVDS格式信号&#xff0c;而不是RGB。逻辑板的作用是把数字板送来…

python进程间通信——命名管道(Named Pipe、FIFO)

文章目录 Python中的命名管道&#xff1a;深入理解进程间通信1. 命名管道简介2. 创建和删除命名管道3. 写入命名管道4. 读取命名管道5. 示例&#xff1a;进程间通信write_to_pipe.pyread_from_pipe.py测试运行 6. 注意事项和限制命名管道的半双工机制命名管道读写任意一方未打开…

记录一次QT乱码问题

问题描述 在敲陆文周的书《QT5开发及实例》的示例代码时&#xff0c;出现乱码&#xff0c;如下图所示 具体代码如下 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->treeWidget->clear();int groupSize 2;int ite…

Pyro —— Velocity Voxel Scale

Velocity Voxel Scale是H19.5引入的新参数&#xff0c;该参数可单独定义volume和速度体素&#xff1b;根据参数设置&#xff0c;可观察到模拟时间的显著变化&#xff1b; Velocity Voxel Scale对DOP和SOP均可用&#xff1b;对DOP设置&#xff0c;该参数在Smoke Object&#xf…

js 小数精确计算 (mathjs / decimal.js)

mathjs import { all, create } from "mathjs";let mathjs create(all, {precision: 14,number: "BigNumber", });/**加法 */ export function jia(left: any, right: any) {return mathjs.floor(Number(mathjs.add(mathjs.bignumber(left), mathjs.bign…

Docker(四)操作容器

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 操作 Docker 容器 容器是 Docker 又一核心概念。 简单的说&#xff0c;容器是独立运行的一个或一组应用&#xff0c;以及它们的运行态环境…

FreeType和HarfBuzz入门示例

最近在了解字体渲染的一些东西&#xff0c;其中不可避免的需要到这两个库。现在写个入门示例记录一下。 一、FreeType和HarfBuzz介绍 1.1 FreeType FreeType 是一个开源的字体引擎&#xff0c;它提供了一套用于渲染字体的 API。FreeType 支持多种字体格式&#xff0c;包括 True…

LLMs之Cheshire-Cat :Cheshire-Cat (Stregatto)的简介(构建自定义人工智能的框架)、安装、使用方法之详细攻略

LLMs之Cheshire-Cat &#xff1a;Cheshire-Cat (Stregatto)的简介(构建自定义人工智能的框架)、安装、使用方法之详细攻略 目录 Cheshire-Cat (Stregatto)的简介 1、文档和资源 2、为什么使用Cat Cheshire-Cat (Stregatto)的安装和使用方法 1、安装 2、最小插件示例 Che…

Centos使用Docker搭建自己的Gitlab(社区版和设置汉化、修改密码、设置SSH秘钥)

根据我的经验 部署Gitlab&#xff08;社区版&#xff09; 至少需要2核4g的服务器 带宽3~4M 1. 在自己电脑上安装终端&#xff1a;宝塔ssl终端 或者 FinalShell&#xff0c;根据喜好安装即可 http://www.hostbuf.com/t/988.html http://www.hostbuf.com/downloads/finalshell_w…

(力扣记录)739. 每日温度

数据结构&#xff1a;栈 时间复杂度&#xff1a;O(n) 空间复杂度&#xff1a;O(n) 代码实现&#xff1a; class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:res [0] * len(temperatures)stack []for i in range(len(temperatures))…