广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++继承详细介绍
  • 873
分享到

C++继承详细介绍

2024-04-02 19:04:59 873人浏览 泡泡鱼
摘要

在我们进行开发的时候,我们经常会遇到抽象出来的类之间具有继承关系。 举个简单的例子,比如我们在设计某游戏,当中需要定义Human也就是人这个类。每个人有名字,以及一定的血量,能够工作

在我们进行开发的时候,我们经常会遇到抽象出来的类之间具有继承关系。

举个简单的例子,比如我们在设计某游戏,当中需要定义Human也就是人这个类。每个人有名字,以及一定的血量,能够工作。也就是说Human这个类具有名字和血量这两个成员变量,还有一个工作的函数。

现在我们还需要开发一个英雄Hero类,英雄也是人,他应该也有名字和血量,以及也可以工作。但英雄又和普通人不同,他具有一些特殊的属性。比如变异,比如超能力等等。那么我们在开发Hero这个类的时候,绝大多数的功能都和Human一样,但是又需要额外开发一些超能力函数。

这个时候我们就会很自然地想到,如果Hero类能够复用Human类当中的内容,那么只要单独额外开发超能力相关的功能即可。

让一个类能够复用另外一个类当中所有的功能,这样的功能叫做继承。在日常开发当中,类似的需求反复出现,因此继承是面向对象当中非常重要的一个部分。

一个类继承了另外一个类,被继承的类成为基类或父类,继承的类成为子类或派生类。

为了更好地说明,我们来看一个例子:

class Human {
   private:
     string _name;
     int _hp;
     int _property;
    public:
     Human(const string & name = "", const int hp = 100, const int property = 0): _name(name), _hp(hp), _property(property) {}
     void Name() const {
            return _name;
        }
     void work(int salary) {
            _property += salary;
        }
};

我们简单实现了Human这个类,给它赋予了三个属性,分别是name名称,hp血量,property和财产。以及三个函数,分别是构造函数、获取姓名以及工作。

现在我们想要实现一个英雄Hero类,它首先要继承Human类,我们可以这么写:

class Hero : public Human {
    ...
};

冒号表示继承,冒号之后的类为继承的父类,public表明这是一个共有基类,这被称为共有派生,派生类对象包含基类对象。使用共有派生,基类的公有成员将称为派生类的公有成员,基类私有部分也将称为派生类的一部分,但只能通过基类的公有和保护方法访问。

关于这一部分当中的细节,我们将会在之后的文章当中详细解释。目前我们只需要知道,这样的写法可以实现一个共有派生,以及共有派生的相关内容即可。

比如英雄有超能力,我们需要一个超能力的名字,还需要一个函数使用超能力,那么就可以写成这样:

class Hero : public Human {
  private:
     string _super_power;
    public:
     Hero(const string &name = "", const int hp = 100, const property = 0, const string & sp): Human(name, hp, property), _super_power(sp) {}
     string SuperPower() const {
            return _super_power;
        }
     void use_power() {
            cout << _super_power << endl;
        }
};

这里面有一个细节,派生类不能直接访问基类的私有成员,必须要通过基类的方法进行访问。构造函数也是一样,因此派生类必须要使用积累的构造函数。

创建派生类的时候,程序会先创建基类对象,基类对象会在程序进入派生类之前被创建。所以我们也可以使用列表初始化的方法来完成:

Hero(const string &name = "", const int hp = 100, const property = 0, const string & sp): Human(name, hp, property), _super_power(sp) {}

如果我们去除代码当中的Human(name, hp, property),那么程序会调用Human类的默认构造函数创建一个默认对象。

当然,我们也可以创建一个入参是父类的构造函数,这样也是可以的。

Hero::Hero(const Human & hu, const string & sp): Human(hu), _super_power(sp) {}

到此这篇关于c++继承详细介绍的文章就介绍到这了,更多相关C++继承内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++继承详细介绍

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

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

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

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

下载Word文档
猜你喜欢
  • C++继承详细介绍
    在我们进行开发的时候,我们经常会遇到抽象出来的类之间具有继承关系。 举个简单的例子,比如我们在设计某游戏,当中需要定义Human也就是人这个类。每个人有名字,以及一定的血量,能够工作...
    99+
    2022-11-12
  • C++继承与菱形继承详细介绍
    目录继承的概念和定义基类和派生类之间的赋值继承中的作用域派生类的默认成员函数菱形继承继承和组合的区分与联系其余注意事项继承的概念和定义 继承机制是面向对象程序设计的一种实现代码复用的...
    99+
    2022-11-13
  • C++ 多继承详情介绍
    C++支持多继承,即允许一个类同时继承多个类。 关于多继承,一直以来争议不断,有一部分人认为多继承会带来大量的问题,为了解决这些问题会使得语言本身变得非常复杂,因此应当避免。另外一派...
    99+
    2022-11-13
  • Javascript继承机制的详细介绍
    这篇文章主要介绍“Javascript继承机制的详细介绍”,在日常操作中,相信很多人在Javascript继承机制的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ja...
    99+
    2022-10-19
  • Kotlin类的继承实现详细介绍
    1.在kotlin中,默认类都是封闭的closed的。如果要让某个类开放继承,必须用open关键字修饰 类中的方法默认也是关闭的。如果需要子类复写父类的方法,也必须用open修饰。 ...
    99+
    2022-11-13
  • Python类的继承与多态详细介绍
    目录概念类的创建类的继承多态的使用概念 类(Class): 用来描述具有相同的属性和方法的对象的集合。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类...
    99+
    2022-11-12
  • 一篇文章超详细的介绍Java继承
    目录前言继承继承的优点重写和隐藏父类方法重写父类中的方法隐藏父类中的方法方法重写和隐藏后的修饰符子类访问父类私有成员使用super关键字使用super调用父类的无参数构造方法/有参数...
    99+
    2022-11-13
  • C++中继承(inheritance)详解及其作用介绍
    概述 面向对象程序设计中最重要的一个概念是继承 (inheritance). 继承允许我们依据另一个类来定义一个类, 这使得创建和维护一个应用程序变得更统一. 这样做也达到了重用代码...
    99+
    2022-11-12
  • C/C++中多重继承详解及其作用介绍
    目录概述优缺点优点缺点声明多重继承的方法格式例子二义性两个基类有同名成员基类和派生类有同名成员两个基类从同一个基类派生概述 多重继承 (multiple inheritance): ...
    99+
    2022-11-12
  • C++详细讲解继承与虚继承实现
    目录继承的概念及定义概念:定义:继承关系和访问限定符总结基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员复杂的菱形继承及菱形虚拟继承虚继承原理继承的...
    99+
    2022-11-13
  • 关于java中继承类的权限问题的详细介绍
    在Java中有一个比较容易忽略的问题,那就是继承类的权限与基类的权限之间的关系。因为平时在使用继承类的时候,可能很少会需要到修改基类的访问权限控制符,而是直接使用基类的访问权限控制符。如果基类有属性方法是private的,那么子类是否可以修...
    99+
    2019-09-11
    java教程 java 继承类 权限
  • JavaScript继承方式介绍
    本篇内容介绍了“JavaScript继承方式介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、构造函数...
    99+
    2022-10-19
  • C++关于指针,继承和多态介绍
    目录指针指针和继承指针、继承和多态指针 我们在书本上学到的指针基本上都是:首先,指针是一个变量;其次,这个变量存储的值是一个地址。这个是对指针的一个基本理解,最近在编程中发现了一些新...
    99+
    2022-11-12
  • Swift继承Inheritance浅析介绍
    目录继承(Inheritance)内存结构重写属性重写实例属性重写类型属性属性观察器final继承(Inheritance) 1、值类型(枚举、结构体)不支持继承,只有类支持继承 2...
    99+
    2022-11-13
  • C++模板超详细介绍
    目录1.前言2.函数模板3.类模板1.前言 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。 通常有两种形式:函数模板和...
    99+
    2022-11-13
  • C++超详细介绍模板
    目录定义例子格式处理方法定义 函数模板不是一个实在的函数,编译器不能为其生成可执行代码。定义函数模板后只是一个对函数功能框架的描述,当它具体执行时,将根据传递的实际参数决定其功能。 ...
    99+
    2022-11-13
  • C++BoostMultiIndex使用详细介绍
    目录一、关于BOOST的容器二、Boost.MultiIndex练习一、关于BOOST的容器 容器是 C++ 中最有用的数据结构之一。标准库提供了许多容器,而 Boost 库提供的更...
    99+
    2022-11-13
    C++ Boost MultiIndex C++ MultiIndex
  • C#属性的详细介绍
    这篇文章主要讲解了“C#属性的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#属性的详细介绍”吧!C# 属性示例代码class TimePeriod  ...
    99+
    2023-06-17
  • Maven继承与聚合详解及作用介绍
    目录一、继承引言1. 继承关系的实现2. 依赖配置二、聚合引言实现聚合三、继承与聚合的合并一、继承 引言 继承关系可以对不同模块的依赖版本做统一管理,因为子模块中的依赖基本都继承于父...
    99+
    2022-11-13
  • C语言指针详细介绍
    本篇内容主要讲解“C语言指针详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言指针详细介绍”吧!指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作