广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中的继承模式有哪些
  • 171
分享到

C++中的继承模式有哪些

2023-06-14 07:06:32 171人浏览 独家记忆
摘要

这篇文章主要介绍了c++中的继承模式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言继承是OOP设计中的重要概念。在C++语言中,派生类继承基类有三种继承方式:私有继

这篇文章主要介绍了c++中的继承模式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

前言

继承是OOP设计中的重要概念。在C++语言中,派生类继承基类有三种继承方式:私有继承(private)、保护继承(protected)和公有继承(public)。

一、继承规则

继承是C++中的重要特性,派生类可以访问基类中的protected和public成员
先上代码:

#include<iOStream>using namespace std;class Base{private:void func_pri();protected:void func_pro();public:void func_pub();};void Base::func_pri(){cout << "private" << endl;}void Base::func_pro(){cout << "protected" << endl;}void Base::func_pub(){cout << "public" << endl;this->func_pri();}class Derive:public Base{public:void function();};void Derive::function(){//func_pri();调用private成员会产生编译错误func_pro();func_pub();}int main(){Derive* derive;derive=new Derive;derive->function();//output://protected public privatedelete derive;return 0;}

酱在这里用一段简单地代码为大家说明了继承的规则。派生类只能访问基类的public和protected成员,无法访问private成员;若要调用类中private成员,要在类内部使用this指针传参(关于this指针的用法,酱在后续文章中会为大家进一步整理)。这里Derive是public Base,是公有继承。
上表:


C++中的继承模式有哪些

二、继承类型

首先要确立一个概念:无论是公有、私有还是保护继承,说到底它们都属于继承,满足继承的基本规则(如上表)。无论是private、protected还是public,对于直接向基类继承的派生类来说几乎没有影响(即俗称的“子代”而非“孙子代”)。上面的代码class Derive:public Base换成private Base和protected Base,结果都是一样的。
影响的是派生类的继承,即“孙子代”。

1.保护继承

先上代码:

#include<iostream>using namespace std;class Base{private:void func_pri();protected:void func_pro();public:void func_pub();};void Base::func_pri(){cout << "private" << endl;}void Base::func_pro(){cout << "protected" << endl;}void Base::func_pub(){cout << "public" << endl;this->func_pri();}class Derive:protected Base{public:void function();};void Derive::function(){func_pro();func_pub();}class Derive_sec:public Derive{public:void func_sec();};void Derive_sec::func_sec(){func_pub();func_pro();//func_pri();调用这里时会产生错误}int main(){Derive_sec* derive;derive=new Derive_sec;derive->func_sec();delete derive;return 0;}

这段代码运行后的结果是public protected。
可以看出的是Derive_sec类(子二代)可以调用的是Base基类的protected和public成员函数,而无法调用private成员函数。

2.私有继承

先上代码:

#include<iostream>using namespace std;class Base{private:void func_pri();protected:void func_pro();public:void func_pub();};void Base::func_pri(){cout << "private" << endl;}void Base::func_pro(){cout << "protected" << endl;}void Base::func_pub(){cout << "public" << endl;this->func_pri();}class Derive:private Base{public:void function();};void Derive::function(){func_pro();func_pub();}class Derive_sec:public Derive{public:void func_sec();};void Derive_sec::func_sec(){//func_pub();调用时会产生错误//func_pro();调用时会产生错误//func_pri();调用这里时会产生错误function();}int main(){Derive_sec* derive;derive=new Derive_sec;derive->func_sec();delete derive;return 0;}

通过结果来看,Derive_sec类(子二代)对Base基类中private、protected和public的成员函数均不能调用,但其仍然可以调用子一代的公有函数。

总结

在三种模式的继承中,我们可以看出当子一代设置为公有继承/保护继承基类时,子二代对基类protected、public成员变量可以访问,而对private变量不可访问;当子一代设置为私有继承基类时,子二代对基类private、protected、public成员变量均不能访问.
我们可以得出这样的结论:当基类和派生类具有直接继承关系时,按照上文所述继承规则即可;若派生类是经过对基类的多重继承得来的,则要考虑之前的继承模式。
private继承模式在对类之间的封装性有要求时,可以考虑使用。

感谢你能够认真阅读完这篇文章,希望小编分享的“C++中的继承模式有哪些”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网其他教程频道,更多相关知识等着你来学习!

--结束END--

本文标题: C++中的继承模式有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • C++中的继承模式有哪些
    这篇文章主要介绍了C++中的继承模式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言继承是OOP设计中的重要概念。在C++语言中,派生类继承基类有三种继承方式:私有继...
    99+
    2023-06-14
  • C++ 中的继承方式有哪些
    C++ 中的继承方式有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。public 方式继承基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员可见,基类的公有...
    99+
    2023-06-06
  • JavaScript中的继承模式有哪些
    JavaScript中的继承模式有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一. 原型链继承所谓原型链继承,就是让父类的一个实例作为子...
    99+
    2022-10-19
  • C++中有哪些实现继承的方式
    C++中有哪些实现继承的方式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++继承方式1.普通继承+父类无virtual函数若子类没有新定义virtual函数...
    99+
    2023-06-17
  • JavaScript中的继承方式有哪些
    这篇文章将为大家详细讲解有关JavaScript中的继承方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。类式继承(构造函数)JS中其实是没有类的概念的,所谓的类也...
    99+
    2022-10-19
  • css中有哪些继承样式
    这篇文章将为大家详细讲解有关css中有哪些继承样式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 css继承样式有:visibi...
    99+
    2022-10-19
  • JavaScript中有哪些继承方式
    这期内容当中小编将会给大家带来有关JavaScript中有哪些继承方式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。原型链首先得要明白什么是原型链,在一篇文章看懂prot...
    99+
    2022-10-19
  • javascript中有哪些继承形式
    本篇文章为大家展示了javascript中有哪些继承形式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Js的继承大体上就是两种:对象冒充、原型方式。这两种方式各有优点和缺陷,这里我先列举出来,再从底...
    99+
    2023-06-14
  • javascript的继承方式有哪些
    这篇文章主要讲解了“javascript的继承方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript的继承方式有哪些”吧! ...
    99+
    2022-10-19
  • js继承的方式有哪些
    这篇文章主要介绍js继承的方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!原型链继承原型链继承是ECMAScript的主要继承方式。其基本思想就是通过原型继承多个引用类型的属性和方法。什么是原型链每个构造函数...
    99+
    2023-06-14
  • C++中的继承模式深入详解
    前言 继承是OOP设计中的重要概念。在C++语言中,派生类继承基类有三种继承方式:私有继承(private)、保护继承(protected)和公有继承(public)。 一、继承...
    99+
    2022-11-11
  • c++继承的实现方式有哪几种
    在C++中,有三种继承的实现方式:公有继承、私有继承和保护继承。 公有继承: 公有继承是最常用的继承方式。使用关键字"publi...
    99+
    2023-10-26
    c++
  • java实现继承的方式有哪些
    在Java中,实现继承的方式有以下几种:1. 类继承(单继承):一个子类只能继承一个父类。例如:class SubClass ext...
    99+
    2023-10-18
    java
  • javascript继承实现的方式有哪些
    本文小编为大家详细介绍“javascript继承实现的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript继承实现的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是继承用官...
    99+
    2023-07-05
  • es5实现继承的方式有哪些
    在 ES5 中,可以通过以下方式实现继承:1. 使用原型链继承:将父类的实例作为子类的原型。这样子类就可以继承父类的属性和方法。示例...
    99+
    2023-08-08
    es5
  • JS继承实现方式有哪些
    这篇文章主要介绍“JS继承实现方式有哪些”,在日常操作中,相信很多人在JS继承实现方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS继承实现方式有哪些”的疑惑有所帮...
    99+
    2022-10-19
  • CSS中默认可继承样式有哪些
    这篇文章给大家分享的是有关CSS中默认可继承样式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。常用可继承样式color   cursor &n...
    99+
    2022-10-19
  • php中类继承与接口继承的区别有哪些
    今天小编给大家分享一下php中类继承与接口继承的区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在PHP中,类继承与...
    99+
    2023-06-29
  • JavaScript中有哪些继承的方法
    这篇文章将为大家详细讲解有关JavaScript中有哪些继承的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 什么是继承继承: 首先继承是一种关系,类(class)与类之间的关系,J...
    99+
    2023-06-15
  • python中继承有哪些特征
    这篇文章将为大家详细讲解有关python中继承有哪些特征,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作