博客
关于我
c++继承与派生习题答案
阅读量:550 次
发布时间:2019-03-09

本文共 1802 字,大约阅读时间需要 6 分钟。

C++ 进阶学习内容

1. 派生类与继承概念

在C++中,继承是一种强的多态性特性,使得派生类能够继承基类的成员(包括函数和变量)。继承可以通过公共、私有、保护三种方式实现,分别对应于publicprivateprotected修饰符。

当使用公开继承时,基类的成员在派生类中直接成为公开成员。如果是保护继承,那么基类的公有成员成为派生类的保护成员,保护成员则保持为保护成员。私有成员则在派生类中不能直接访问。基类的私有成员无论在何种继承方式下,都不直接可访问。

派生类的构造函数负责初始化基类对象、成员对象以及自身的构造过程。多继承时,由于同名成员的混淆( redundancy),可能会产生歧义。为此,可以使用虚基类(virtual base class)或作用域分辨符来解决。

2. 派生类操作

2.1 派生类如何实现对基类私有成员的访问

对于基类私有成员,只有在派生类中通过using声明或重写(overriding)访问是不可能的。不过,当使用友元关系(friend),可以实现对基类私有成员的访问。

2.2 类型兼容规则

类型兼容规则(type compatibility rules)是指在进行对象赋值、函数调用等操作时,目标类型是否与源类型兼容。兼容的条件是目标类型必须是基类或其派生类,且参数的类型匹配。

2.3 构造函数执行顺序

构造函数的执行顺序是:首先初始化基类,接着初始化派生类的直接成员对象,最后执行派生类构造函数体。析构函数的执行顺序则相反:先释放派生类的直接成员对象,接着释放基类对象。

2.4 继承与组合的关系

继承属于多态性表现形式,而组合则是通过类之间的包含或引用方式进行信息整合。两者的区别在于继承属于“谁是谁的儿子”的关系,而组合则是“是什么存放在这里”。两者结合可以让系统模块化设计,提高复用性。

2.5 虚基类应用

虚基类的作用是消除多继承带来的歧义。含有虚基类的派生类构造函数要求必须显式调用基类构造函数,否则会引发潜在的错误。此外,最远派生类(deepest derived class)负责初始化所有虚基类的对象。

2.6 错误识别与修正

在选择题中,错误的描述是“派生类可以作为另一个派生类的基类”(选项D)。实际上,派生类只能作为基类存在于另一个类继承体系中,不可同时为两个不同的派生类服务。

3. 伴随性与继承控制

3.1 友元关系

友元关系(friend)是C++特有的概念,允许一个类中的函数或成员对另一个类的内容拥有特殊访问权限。它既不属于继承,也不属于组合,更多用于实现复杂的_visibility控制_。

3.2 过象关系(Overloading)

函数或构造函数的重写(overloading)允许在同一个类中定义多个名义相同的函数,通过参数类型和数量进行不同的区分。

3.3 宣告方式

在保护继承的情况下,基类的成员在派生类中会受到继承方式的影响。公有成员和保护成员在派生类中仍然可以被访问,而私有成员无论如何都不可直接访问。

3.4 虚函数

在多态中,虚函数(virtual)允许在派生类中重新定义基类的虚函数,从而实现召唤机制(run-time binding),解决“抽象化”相关问题。

3.5 析构式语言

析构式语言(RAII)是一种资源管理方式,利用对象的构造与析构操作来进行资源的开启与释放,简化了资源的管理逻辑。

3.6 截图示例

通过一个具体的类和构造函数定义,可以区分不同的派生类成员,以及构造函数的执行顺序。

3.7 初步测试

通过具体的程序运行测试,可以验证关于继承与析构函数行为的理解是否正确。

4. 编程实践

4.1 类与结构之间的区别

类具有类型检查机制和类型转换可能性,更加强大和灵活,而结构是简单的数据聚合体,无类型系统。

4.2 构造函数的标准写法

正确的构造函数定义必须明确初始化基类和成员对象,避免代码运行时错误。

4.3 类的分类与属性

类ifies通过内外存储区划分为共用体(external类)和内联类(internal class)。每个类都有自身的属性,如模板等。

4.4 方法制约与约束

C++中的方法(member functions)具有行为规定,确保程序的健壮性和可维护性。

通过本次复习,巩固了C++的核心知识点,尤其是继承与多态相关的内容,为后续的深入学习奠定了基础。

转载地址:http://mfjsz.baihongyu.com/

你可能感兴趣的文章
Nginx配置TCP代理指南
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
Nginx配置参数中文说明
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>
NI笔试——大数加法
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>