C++ primer Plus 第十三章复习题

2023-11-18

1、派生类从基类哪里继承了什么?

成员数据,还有一半的成员函数,

公有成员和保护成员是可见得,私有成员不可见,

2、派生类不能从基类哪里继承什么?

构造函数,析构函数,赋值运算符,还有友元函数,都不能继承。

3、假设baseDMA::operator=()函数得函数返回类型为void,而不是baseDMA&,这将有什么后果?如果返回类型为baseDMA,而不是baseDMA&,又将有什么后果?

返回类型为void,可以进行单个赋值,但是不能进行连续的赋值,例如a=b=c这种情况

返回了baseDMA,则返回一个副本,增加程序的消耗,效率降低。

4、创建和删除派生类对象时,构造函数和析构函数得调用顺序是怎样的?

创建的适合先调用基类得构造函数,析构得时候先调用派生类的析构函数。

5、如果派生类没有添加任何数据成员,它是否需要构造函数?

需要,构造函数是不能继承自基类得,即使自己不写,系统也会生成一个默认得。

6、如果基类和派生类定义了同名的方法,当派生类对象调用该方法时,被调用的将是哪个方法?

调用的是派生类的方法。

7、在什么情况下,派生类应定义赋值运算符?

在派生类得构造函数使用了new或者new[]来初始化指针成员的时候。

(在派生类新增的数据成员是指针时,需要定义赋值运算符。)

8、可以将派生类对象的地址赋值给基类指针吗?可以将基类对象的地址赋值给派生类指针吗?

前者是可以的,相当于基类指针指向派生类对象;

后者一般不行,因为这样做的结果不确定,如果派生类指针指向基类对象,并使用了派生类的方法,就可能导致错误。

9、可以将派生类对象赋给基类对象吗?可以将基类对象赋给派生类对象吗?

前者是可以的,会调用复制构造函数或者赋值运算符,然后将派生类对象强制类型转换为基类对象完成。

后者如果没有显式声明以基类对象为参数的构造函数、或赋值运算符,那么是不行的。

10、假设定义了一个函数,它将基类对象的引用作为参数。为什么该函数也可以将派生类对象作为参数。

因为基类的指针、引用,可以指向派生类的对象,但它只能使用基类的方法。

11、假设定义了一个函数,它将基类对象作为参数(即函数按值传递基类对象),为什么该函数也可以将派生类对象作为参数?

因为再按值传递中,派生类对象被强制类型转换为了基类对象来使用(使用基类复制构造函数创造了一个基类的对象),所以可以。

12、为什么通常按引用传递比按值传递对象的效率更高?

因为按引用传递不需要创造临时对象,也不需要使用复制构造函数,节约了从实参到形参,从函数内部对象到函数返回值过程中创造临时对象函数的时间和计算,因此效率更高。按引用传递,还可以确保函数从虚函数受益。

13、假设corporation是基类,PublicCorporation是派生类,再假设这两个类都定义了head()函数,ph是指向Corporaction类型的指针,且被赋给了一个PublicCorporation对象的地址。如果基类将head()定义为:

a.常规非虚方法

b.虚方法

则ph->head()将被如何解释;

a.被解释为调用基类的方法。

b.被解释为调用派生类的方法。

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

C++ primer Plus 第十三章复习题 的相关文章

  • TFS API - 缓慢的 foreach 变更集迭代

    问题背景 我正在使用 TFS api 查询 TFS 服务器上的大范围 1 600 文件 我从每个文件中收集其所有 ChangesetId 然后将其收集在列表中 代码 这是我正在使用的代码 它可以正确生成 QueryHistory 方法中指定
  • 如何从更高级别启动用户级别的 Exe

    我希望一个进程始终在用户级别运行 当它由以管理员级别运行的安装程序 自定义 而不是 msi 启动时 或者当用户登录时 环顾四周 我不确定这是否可能 最简单的方法是有 2 个进程 一种是普通用户 它启动提升 管理进程 然后管理进程可以使用 I
  • Excel的解析路径

    其实我想问以下问题 对于位于 目录中定义的 PATH 怎么能 我找出这些目录中的哪个 找到了 因为我需要使用 Process Run 从 C 运行 Excel 并且只需指示 Excel 即可正常工作 Windows 似乎知道在哪里可以找到它
  • 如何通过实体键添加/删除与实体框架的多对多关系?

    I tried using Entities e new Entities EntityKey key new EntityKey Entities Users UserId 20 User user new User EntityKey
  • 确保 unsigned int/long 始终在 C# 中的检查上下文中执行

    有没有人觉得奇怪 uint 和 ulong 的默认上下文是未检查的 而不是检查的 因为它们旨在表示永远不能为负的值 因此 如果某些代码试图违反该约束 在我看来 自然且首选的行为是抛出异常 而不是返回最大值 这很容易使重要数据处于无效状态并且
  • 从 C++ 中的函数返回二维数组[重复]

    这个问题在这里已经有答案了 可能的重复 C 从函数返回多维数组 https stackoverflow com questions 3716595 c returning multidimension array from function
  • 起订量工作单元

    我是单元测试的新手 我想为我的搜索功能创建一个测试 我的服务层看起来像 public class EmployeeService BaseService IEmployeeService public EmployeeService IUn
  • gcc 删除内联汇编代码

    看起来 gcc 4 6 2 删除了它认为函数中未使用的代码 test c int main void goto exit handler asm volatile jmp 0x0 exit return 0 拆解main 0x0804840
  • 获取进程的所有 DLL

    我想获取为给定进程加载的所有 dll 的列表 我目前正在使用 NET框架4 0 我知道有一个bug https connect microsoft com VisualStudio feedback details 546430 syste
  • 使用 c# 中的 c++ ref 中的引用从 C# 调用 C++ 代码错误

    所以在我的 c dll 文件中我得到了以下函数 DLL void GetUserPass char userName char passWord userName ceva passWord altceva 现在我想从 c 调用它 但它给了
  • 使用 OpenSSL 库在 C++ 中生成 SHA 哈希值

    如何使用以下命令生成 SHA1 或 SHA2 哈希值OpenSSL https openssl org图书馆 我搜索了谷歌 找不到任何函数或示例代码 从命令行来看 很简单 printf compute sha1 openssl sha1 您
  • 为什么这段代码不会产生编译错误?

    template
  • 扩展一个类

    编辑回答 虽然我最初的问题并没有完全按照康拉德 鲁道夫提供的答案所解决的方式解释我的需求 但他 无意或有意 基本上为我写了我想写的内容 类本身不会被扩展 但通过使类了解新函数来扩展其功能 这些新函数允许它 类 处理更广泛的问题 我非常感谢您
  • cmake 包括其他目录中的 h 文件

    我在 cmake 项目下进行测试时遇到问题 我的项目是这样安排的 TerrainMap PointAccumulator heightQuadGrid Test 在 TerrainMap 目录中 CMakeLists txt 文件简单地概述
  • 初始化二维数组时出现分段错误

    我已经检查过我的代码是否正确地划分了内存空间 但是一旦我尝试将 2D 数组初始化为某些值 然后对这些值求和 我就会在 2x2 数组上收到分段错误 我想最终将我的代码扩展到更大的数组 但我什至无法让它在这里工作 我知道有很多关于 malloc
  • Sharepoint 的 CAML 查询中的日期时间比较

    我正在尝试从共享点列表中获取某些项目 具体取决于自定义列中的日期 我已经使用 U2U Caml Builder 创建了查询 这很有效 但是当我将其放入 Web 部件中自己的代码中时 它总是返回列表中的所有项目 这是我的代码 DateTime
  • 使用客户端 hello 消息进行 TLS 协议检测

    我需要检测网络流量中的 https 数据包 到目前为止 我将所有 443 标记为 https 但我不想再在这种情况下使用端口信息 检查客户端问候消息是否足够 Check 22 and version info 0300 0301 or 03
  • C++11 中引入了哪些重大更改?

    我知道 C 11 中至少有一项更改会导致一些旧代码停止编译 引入explicit operator bool 在标准库中 替换旧实例operator void 诚然 这将破坏的代码可能是一开始就不应该有效的代码 但它仍然是一个破坏性的变化
  • 创建进程的多个子进程并维护所有 PID 的共享数组

    我已经分叉了几次 并用 C 创建了一堆子进程 我想将它们所有的 PID 存储在一个共享数组中 PID 的顺序并不重要 例如 我创建了 32 个进程 我想要一个 32 个整数长的数组来存储每个 PID 并且每个进程都可以访问 最好的方法是什么
  • 如何在 C# 中将 json 转换为平面结构

    我正在尝试用 C 编写函数 将 JSON 转换为键 值对 它应该支持数组 例如下面的 JSON title title value components component id id1 menu title menu title1 tit

随机推荐

  • 无线发射功率

    无线电发射功率 无线电发射机输出的射频信号 通过馈线 电缆 输送到天线 由天线以电磁波形式辐射出去 电磁波到达接收地点后 由天线接收下来 仅仅接收很小很小一部分功率 并通过馈线送到无线电接收机 因此在无线网络的工程中 计算发射装置的发射功率
  • msm8937 usb power off charging log

    Format Log Type Time microsec Message Optional Info Log Type B Since Boot Power On Reset D Delta S Statistic S QC IMAGE
  • spark中repartition和coalesce的区别

    总的来讲 两者 对是否允许shuffle 不同 coalesce numPartitions shuffle false repartition numPartitions repartition 其实是 coalesce 中参数shuff
  • 调用拷贝构造函数的三种情况

    1 当用类的一个对象去初始化类的另一个对象时 如下代码中的 Rectangle p2 p1 用对象p1去初始化对象p2 拷贝构造函数被调用 代入法 还有一种是赋值法 Rectangle p2 p1 2 当函数的形参是类的对象 调用函数进行形
  • 中达优控一体机说明书_如何在中达优控一体机上实现温度显示?

    如何在中达优控一体机上实现温度显示 首先是硬件的连接 硬件连接良好是系统能运行的基础 第二就是软件的编程 包括PLC的编程和YKBuilder的组态编程 只有硬件连接好 软件编程没有错误 系统才能正常工作 才能正常显示传感器测量到的温度值
  • Windows环境IDEA下Ranger1.2.0源码编译

    文章目录 Windows环境IDEA下Ranger1 2 0源码编译 一 本地环境准备 二 源码编译 三 使用idea打开项目 1 安装数据库Mysql版 2 配置Tomcat 发布 security admin web项目 3 修改sec
  • 建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。

    问题描述 建立一个对象数组 内放5个学生的数据 学号 成绩 用指针指向数组首元素 输出第1 3 5个学生的数据 样例输入 无 样例输出 101 78 5 103 98 5 105 95 5 补充程序 include
  • kill 命令 killall pkill

    killall 命令 Linux系统中的killall命令用于杀死指定名字的进程 kill processes by name 我们可以使用kill命令杀死指定进程PID的进程 如果要找到我们需要杀死的进程 我们还需要在之前使用ps等命令再
  • L1-071 前世档案 (20 分)–PAT 团体程序设计天梯赛 GPLT

    include
  • ES6 Promise详解

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Android Studio工具使用技巧

    作为一个Android开发者 熟练使用开发工具能让你工作效率提高 能让你少点加班 剩下时间学习其他的知识 是个多么好的事情 想高级攻城狮方向迈进 不费话了 直接进去主题 一 模版 1 1 for循环的使用 遍历集合的时候 对象 for就可以
  • 使用Python构建强大的网络爬虫

    介绍 网络爬虫是从网站收集数据的强大技术 而Python是这项任务中最流行的语言之一 然而 构建一个强大的网络爬虫不仅仅涉及到获取网页并解析其HTML 在本文中 我们将为您介绍创建一个网络爬虫的过程 这个爬虫不仅可以获取和保存网页内容 还可
  • 【满分】【华为OD机试真题2023 JAVA&JS】字符串重新排序

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 字符串重新排序 知识点排序数组 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 给定一个字符串s s包含以空格分隔的若干个单词 请对s进行如下处理后输出 1 单词
  • ctfshow web171-174

    Web 171 打开发现以下内容 看到了一个查询语句 于是认真看了一下 拼接sql语句查找指定ID用户 sql select username password from user where username flag and id GE
  • shell脚本中$#、$*、$@、$?、$0-n等含义一次性搞明白!!!

    一 Shell脚本变量的含义 1 表示执行脚本传入参数的个数 2 表示执行脚本传入参数的列表 不包括 0 3 表示进程的id Shell本身的PID ProcessID 即脚本运行的当前 进程ID号 4 Shell最后运行的后台Proces
  • 了解少儿编程和机器人编程的区别

    最近少儿编程已经成了炽手可热的培训 不过很多家长也在网上看到有很多网站也提到了机器人编程 这就让很多家长纳闷了 都是编程少儿编程和机器人编程有什么区别呢 现在我们就一起和南京小码王少儿编程培训机构来看下吧 一 少儿编程和机器人编程是什么 机
  • 看天气WeatherCan V1.0 ---气象数据分析系统web版

    版权声明 本文为CSDN博主 老郭1 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net HZGJF article details 104772394 Wea
  • 电脑睡眠,休眠,关闭硬盘的区别

    最近在设置电源选项是对电脑睡眠 休眠 关闭硬盘不太了解 就上网查了一下 睡眠是一种节能状态 睡眠可保存所有打开的文档和程序 当您希望再次开始工作时 可使计算机快速恢复全功率工作 通常在几秒钟之内 使计算机进入睡眠状态就像是暂停DVD 播放器
  • 支付宝转账有“后悔药”了 遇诈骗这样做可冻结资金

    在支付宝上转完账猛然意识到可能是骗子 怎么办 今后 可以 一键 撤回了 昨天 在2018网络安全生态峰会上 蚂蚁金服集团副总裁芮雄文宣布支付宝的延时到账升级为2 0 如果遭遇诈骗 只要延时转账还未到账 及时报警就能冻结交易 一旦警方下达止付
  • C++ primer Plus 第十三章复习题

    1 派生类从基类哪里继承了什么 成员数据 还有一半的成员函数 公有成员和保护成员是可见得 私有成员不可见 2 派生类不能从基类哪里继承什么 构造函数 析构函数 赋值运算符 还有友元函数 都不能继承 3 假设baseDMA operator