iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >如何解析C++类继承关系问题
  • 504
分享到

如何解析C++类继承关系问题

2023-06-17 17:06:01 504人浏览 独家记忆
摘要

今天就跟大家聊聊有关如何解析c++类继承关系问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。对***次接触到C++类继承的用户和学者来说,但是首先要对C++类继承的性质进行充分了解

今天就跟大家聊聊有关如何解析c++类继承关系问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

对***次接触到C++类继承的用户和学者来说,但是首先要对C++类继承的性质进行充分了解,那么就先说一下什么是C++类,所谓C++类:类是定义同一类所有对象的变量和方法的蓝图或原型。

1. public
从语义角度上来说,public继承是一种接口C++类继承,根据面向对象中的关系而言就是,子类可以代替父类完成父类接口所声明的行为,也就是必须符合“Liskov替换(LSP)”,此时子类可以自动转换成为父类的接口,完成接口转换。从语法角度上来说,public继承会保留父类中成员(包括函数和变量等)的可见性不变,也就是说,如果父类中的某个函数是public的,那么在被子类继承后仍然是public的。

2. protected
从语义角度上来说,protected继承是一种实现继承,根据面向对象中的关系而言就是,子类不能代替父类完成父类接口所声明的行为,也就是不符合“Liskov替换原则(LSP)”,此时子类不能自动转换成为父类的接口。

就算通过类型转换(static_cast和dynamic_cast)也会得到一个空指针。从语法角度上来说,protected继承会将父类中的public可见性的成员修改成为protected可见性,相当于在子类中引入了protected成员,这样一来在子类中同样还是可以调用父类的protected和public成员,子类的子类就也可以调用被protected继承的父类的protected和public成员。

3. private
从语义角度上来说,private继承是一种实现C++类继承,根据面向对象中的关系而言就是,子类不能代替父类完成父类接口所声明的行为,也就是不符合“Liskov替换原则(LSP)”,此时子类不能自动转换成为父类的接口。

就算通过类型转换(static_cast和dynamic_cast)也会得到一个空指针。从语法角度上来说,private继承会将父类中的public和protected可见性的成员修改成为private可见性,这样一来虽然子类中同样还是可以调用父类的protected和public成员,但是在子类的子类就不可以再调用被private继承的父类的成员了。

class CSample1 {       protected:           void printProtected() {}       public:           void printPublic() {}       };       class CSample2 : protected CSample1 {              };       class CSample3 : public CSample2 {           void print3() {               printProtected();               printPublic();           }       };

在面向对象的理论中有两种概念:接口、实现,所以就出现了所谓的接口继承和实现继承两种关系。而protected和private就是实现继承中所要用到的,其实protected和private两者则约束继承时并没有形成两种不同的继承类别,而仅仅只是为了方便C++类方法的传递调用而设计的。

其实在java这样面向对象要求更为严格的语言当中,没有实现继承,他必须通过委托方式来完成这一概念,如果熟悉java就会明白,如果一个对象要使用另外一个对象的接口功能,而自身又不能够充当该对象所扮演的角色时,就会通过委托来完成。

这样一来就必须在对象中包含一个委托对象,通过对象调用语法来完成功能;在C++中就可以通过protected和private继承来完成java中的委托关系(当然C++也可以形成对象委托关系),那么这种情况下protected继承就容许委托可以传递(也就是被多级子类调用),而private继承是不容许委托被传递的。

看完上述内容,你们对如何解析C++类继承关系问题有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网其他教程频道,感谢大家的支持。

--结束END--

本文标题: 如何解析C++类继承关系问题

本文链接: https://www.lsjlt.com/news/291171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解析C++类继承关系问题
    今天就跟大家聊聊有关如何解析C++类继承关系问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。对***次接触到C++类继承的用户和学者来说,但是首先要对C++类继承的性质进行充分了解...
    99+
    2023-06-17
  • C++中常见的多重继承问题解析
    C++中常见的多重继承问题解析多重继承是一种常见的面向对象编程技术,允许一个类继承多个基类。然而,多重继承也常常引发一些问题和挑战,需要开发人员仔细理解和处理。菱形继承问题菱形继承是指一个派生类同时继承了两个基类,并且这两个基类又共同继承同...
    99+
    2023-10-22
    C++ 多重继承 问题解析
  • 如何解决VB.NET窗体继承问题
    这篇文章主要介绍如何解决VB.NET窗体继承问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建一个基窗体Form1,在窗体中放入三个TextBox,为别为TextBox1 TextBox2 TextBox3为Te...
    99+
    2023-06-17
  • 在C++中如何阻止类被继承详解
    这个话题是源自于一个面试题,我在网上查了一下有不少这方面的解说!我自己整理了一下,选择了一个自认为是最优方案! 我们从最简单的开始: 首先,大家都知道要阻止类被实例化,可以通过使...
    99+
    2022-11-12
  • 如何解析有关C++参数问题
    本篇文章为大家展示了如何解析有关C++参数问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。所谓C++参数的说明,其实是对指定应用而言,它可以是赋予的常数值,在泛指时,它可以是一种变量,用来控制随其...
    99+
    2023-06-17
  • 如何进行C++继承类成员访问权限修饰符的分析
    这期内容当中小编将会给大家带来有关如何进行C++继承类成员访问权限修饰符的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 前言C++提供了三个修饰符来限定类成员的被访问权限,分别是public ,...
    99+
    2023-06-21
  • PHP中如何用Trait解决单继承问题
    这篇文章主要讲解了“PHP中如何用Trait解决单继承问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中如何用Trait解决单继承问题”吧!我们都知道PHP是单继承语言,但是有些时候...
    99+
    2023-06-29
  • 如何浅析C++类访问控制问题
    本篇文章给大家分享的是有关如何浅析C++类访问控制问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在介绍C++类之前,首先要了解下什么是C++类?其实C++类是将数据成员和进...
    99+
    2023-06-17
  • 如何在Python中使用多继承解决复杂的代码重用问题
    如何在Python中使用多继承解决复杂的代码重用问题引言:在编写复杂的代码时,代码重用性是一个非常重要的因素。Python中的多继承是一种强大的工具,它允许一个类从多个父类继承属性和方法。在本文中,我们将介绍如何在Python中使用多继承来...
    99+
    2023-10-22
    Python 代码重用 多继承
  • 如何解析学习C++时的疑难问题
    本篇文章为大家展示了如何解析学习C++时的疑难问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。许多编程人员学习C++总结经验为,有的觉得C++语言是一门独立的语言,并不是在C语言的基础上,可以直接...
    99+
    2023-06-17
  • CSS3如何为背景图设置遮罩并解决遮罩样式继承问题
    这篇文章主要介绍了CSS3如何为背景图设置遮罩并解决遮罩样式继承问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。工作中很多时候需要对图片背景作处理,比如设置通透性,模糊处理...
    99+
    2023-06-08
  • 如何在 Windows 系统中使用 PHP?数据类型、IDE 等问题解析!
    PHP 是一种广泛使用的服务器端脚本语言,它可以用于 Web 开发和命令行脚本。在 Windows 系统上使用 PHP 也是非常方便的。本文将介绍如何在 Windows 系统中使用 PHP,并讨论数据类型、IDE 等问题。 安装 PHP ...
    99+
    2023-11-05
    windows 数据类型 ide
  • C#如何使用Task类解决线程的等待问题
    目录使用Task类解决线程的等待问题Task类用法示例小结C#代码执行中等待10秒使用Task类解决线程的等待问题 在任何的编程语言中,面对耗时任务时,我们都会有这样的需求:让任务执...
    99+
    2022-11-13
  • 如何解决maven与jdk版本对应关系问题
    这篇文章主要介绍如何解决maven与jdk版本对应关系问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!maven与jdk版本对应关系很多搬砖的小伙伴在使用maven项目打包的时候,都会遇到下面的编译问题:Cause...
    99+
    2023-06-22
  • 如何解决XP系统锁定时不关机的问题
    这期内容当中小编将会给大家带来有关如何解决XP系统锁定时不关机的问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。很多用户抱怨在使用电脑的过程中,总是经常会被琐碎的事情打断,有时候难免暂时离开电脑,处于便...
    99+
    2023-06-14
  • 如何解决css定位position引发的层级关系问题
    这篇文章主要介绍了如何解决css定位position引发的层级关系问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。position定位里的absolute,relative...
    99+
    2023-06-08
  • Java11中如何解决基于嵌套关系的访问控制优化问题
    这篇文章主要为大家展示了Java11中如何解决基于嵌套关系的访问控制优化问题,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“Java11中如何解决基于嵌套关系的访问控制优化问题”这篇文章吧。Java...
    99+
    2023-06-26
  • 在Go语言中如何解决并发任务依赖关系问题?
    在Go语言中如何解决并发任务依赖关系问题?在并发编程中,任务间的依赖关系是一个常见的问题。当多个任务之间存在依赖关系时,我们需要确保它们按照一定的顺序依次执行,以避免数据竞争和不确定的结果。在Go语言中,我们可以使用一些技术和工具来解决这个...
    99+
    2023-10-22
    Goroutine(Go协程) Channel(通道) WaitGroup(等待组)
  • 如何解决Linux系统中关于KVM虚拟机迁移出现的问题
    这篇文章主要介绍“如何解决Linux系统中关于KVM虚拟机迁移出现的问题”,在日常操作中,相信很多人在如何解决Linux系统中关于KVM虚拟机迁移出现的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解...
    99+
    2023-06-12
  • 如何解决win7系统中打开或关闭windows功能显示一片空白问题
    这篇文章主要为大家展示了“如何解决win7系统中打开或关闭windows功能显示一片空白问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决win7系统中打开或关闭windows功能显示一...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作