我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++中的派生机制是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++中的派生机制是什么

这篇文章主要介绍“C++中的派生机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中的派生机制是什么”文章能帮助大家解决问题。

一、派生的类型

C++支持以下几种派生类型:

公有派生: 在公有派生中,派生类可以访问基类中的公有成员和受保护成员,但不能访问基类中的私有成员。公有派生通常用于向基类添加新的特征和行为。

示例代码如下:

class Base {public:    int public_var;protected:    int protected_var;private:    int private_var;};class Derived : public Base {public:    void setVar(int a, int b, int c)    {        public_var = a;  //公有成员可以在派生类中访问        protected_var = b;  //受保护成员可以在派生类中访问        // private_var = c;  //私有成员无法在派生类中访问    }};

保护派生: 在保护派生中,派生类可以访问基类中的公有成员和受保护成员,但不能访问基类中的私有成员。保护派生通常用于继承,即将基类的所有成员和方法都继承到派生类中。

示例代码如下:

class Base {public:    int public_var;protected:    int protected_var;private:    int private_var;};class Derived : protected Base {public:    void setVar(int a, int b, int c)    {        public_var = a;  //公有成员可以在派生类中访问        protected_var = b;  //受保护成员可以在派生类中访问        // private_var = c;  //私有成员无法在派生类中访问    }};

私有派生: 在私有派生中,派生类可以访问基类中的公有成员和受保护成员,但不能访问基类中的私有成员。私有派生通常用于“隐藏”继承,即对基类进行改进或扩展,但不公开基类的接口。

示例代码如下:

class Base {public:    int public_var;protected:    int protected_var;private:    int private_var;};class Derived : private Base {public:    void setVar(int a, int b, int c)    {        public_var = a;  //公有成员可以在派生类中访问        protected_var = b;  //受保护成员可以在派生类中访问        // private_var = c;  //私有成员无法在派生类中访问    }};

二、派生的语法

在C++中,派生的语法为:

class Derived_class : access_specifier Base_class {    // 包含新成员和覆盖的函数等};

其中,Derived_class 是基于 Base_class 的派生类。access_specifier 表示派生类型,可以是 public、protected 或 private。新的成员和覆盖的函数等是指在派生类中添加的成员和方法。

示例代码如下:

class Base {public:    void print() {        std::cout << "Base" << std::endl;    }};class Derived : public Base {public:    void print() {        std::cout << "Derived" << std::endl;    }};int main(){    Base b;    Derived d;    b.print(); //输出 Base    d.print(); //输出 Derived    return 0;}

上述代码中,Base 类中定义了一个 print() 方法,输出 Base。Derived 类继承自 Base 类,并定义了一个同名的 print() 方法,输出 Derived。在 main 函数中,分别创建了 Base 类和 Derived 类的对象并分别调用了它们的 print() 方法。结果显示,派生类覆盖了其基类的同名方法。

三、多重继承

C++还支持多重继承,即一个派生类从多个基类派生而来。具体地,可以这样建立一个派生类:

class Derived : access_specifier Base1, access_specifier Base2, ... {    // 包含新成员和覆盖的函数等};

其中,Derived 是一个派生类,Base1、Base2 是两个基类,可以有多个基类。access_specifier 表示该基类在派生类中的访问权限,可以是 public、protected 或 private。

示例代码如下:

class Base1 {public:    void print1() {        std::cout << "Base1" << std::endl;    }};class Base2 {public:    void print2() {        std::cout << "Base2" << std::endl;    }};class Derived : public Base1, protected Base2 {public:    void print() {        print1();        //print2(); //private 成员不能在派生类之外的成员函数中访问    }};int main(){    Derived d;    d.print();    return 0;}

上述代码中,定义了两个基类 Base1 和 Base2,分别有各自的方法 print1() 和 print2()。派生类 Derived 继承自 Base1 和 Base2,由于 Base2 的访问权限设置为 protected,在 Derived 中,只有成员函数可以访问 Base2 中的成员。Derived 中定义的 print() 方法分别调用了 Base1 和 Base2 中的方法,结果显示,多重继承能够在派生类中同时使用多个基类的成员,并进行灵活的访问权限设置。

四、虚继承

当一个类同时从多个基类继承,而这些基类中又有共同的基类时,就会出现“二义性”的问题。为了解决这个问题,C++引入了虚继承机制。

虚继承使用关键字 virtual,它告诉编译器,在继承链中只保留一份共同的基类,从而避免了多次继承造成的冗余。另外,虚继承还规定了一个虚基类列表。虚基类列表中的类在继承链中只继承一次,并且会在最深层的派生类中进行初始化。

示例代码如下:

class Root {public:    int i;};class A : public virtual Root {public:    int j;};class B : public virtual Root {public:    int k;};class C : public A, public B {public:    void sum() {        i = j + k;    }};int main(){    C c;    c.j = 10;    c.k = 20;    c.sum();    std::cout << "Sum of j and k is " << c.i << std::endl;    return 0;}

上述代码中,定义了一个基类 Root,和两个继承了 Root 的派生类 A 和 B。类 C 同时从 A 和 B 继承,它将 A 和 B 中的 i 合并为一份,并且在最深层的派生类 C 中进行初始化。在 main 函数中,我们创建了类 C 的对象 c,并对它的成员变量 j 和 k 赋值,并通过 sum() 方法计算它们的和。

五、派生类和基类的关系

派生类和基类之间存在以下关系:

  • 派生类包含的成员都是派生类自己定义的,但它可以访问基类的公有成员和受保护成员,也可以使用基类中的方法。

  • 派生类的对象中包含了基类的对象,即派生类的对象中包含了基类对象的成员。

  • 派生类的对象可以被看作是基类的对象,即派生类的对象可以直接赋值给基类对象。

示例代码如下:

class Base {public:    int publicVar;protected:    int protectedVar;private:    int privateVar;public:    void print() {        std::cout << "publicVar: " << publicVar << std::endl;        std::cout << "protectedVar: " << protectedVar << std::endl;        std::cout << "privateVar: " << privateVar << std::endl;    }};class Derived : public Base {public:    int additionalVar;public:    void printAdditionalVar() {        std::cout << "additionalVar: " << additionalVar << std::endl;    }};int main(){    Derived derived;    derived.publicVar = 1;    //derived.protectedVar = 2;  //protected 成员不能直接在类外部访问    derived.print();  //基类中的公有成员和受保护成员可以在派生类对象中访问    derived.additionalVar = 3;    derived.printAdditionalVar();  //派生类中的成员可以直接访问    Base& base = derived;  //派生类的对象可以赋值给基类对象    base.print();  //基类中的成员可以在基类对象中访问    return 0;}

上述代码中,定义了一个基类 Base 和一个派生类 Derived。在 main 函数中,我们首先创建了一个 Derived 的对象 derived,可以看到它可以访问由其基类 Base 中继承的成员变量和方法。同时,我们为 derived 对象中定义了一个 additionalVar 成员,并定义了一个打印 additionalVar 的方法。接着,我们将 derived 对象赋值给了一个 Base 类型的引用 base,并通过 base 访问了 Base 类中的成员变量和方法。结果显示了派生类和基类之间的关系。

关于“C++中的派生机制是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++中的派生机制是什么

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

下载Word文档

猜你喜欢

C++中的派生机制是什么

这篇文章主要介绍“C++中的派生机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中的派生机制是什么”文章能帮助大家解决问题。一、派生的类型C++支持以下几种派生类型:1.公有派生: 在
2023-07-06

c++中什么是继承与派生

继承允许类(派生类)继承自另一个类(基类)的属性和方法,称为派生。继承的好处包括:代码重用、可扩展性和多态性。c++ 中有三种继承类型:公有、保护和私有,分别控制派生类对基类成员的访问权限。什么是继承与派生在 C++ 中,继承是一种机制,
c++中什么是继承与派生
2024-05-12

C++的继承和派生是什么

这篇文章主要介绍“C++的继承和派生是什么”,在日常操作中,相信很多人在C++的继承和派生是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++的继承和派生是什么”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-29

一文带你学习C++中的派生机制

C++是一门面向对象的编程语言,其中的派生机制是其重要的面向对象特性之一。本文我们就来详细地学习一下C++中的派生机制的相关知识吧
2023-05-15

C++中类的友元机制是什么

这篇文章主要为大家详细介绍了C++中类的友元机制是什么,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:类的友元  友元是C++提供的一种破坏数据封装和数据隐藏的机制。  通过将一个模块声明为另一个模块的友元,一
2023-06-06

C#的反射机制是什么

本篇内容介绍了“C#的反射机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!属性定制是.NET提供的一个非常棒的新特性之一,属性对于所
2023-06-17

C++异常机制是什么

今天小编给大家分享一下C++异常机制是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 异常处理机制介绍C++中的异常
2023-07-06

Jspxcms主键生成机制是什么

这篇“Jspxcms主键生成机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Jspxcms主键生成机制是什么”文章吧
2023-06-26

C#生成随机的中文汉字的原理是什么

这篇文章主要讲解了“C#生成随机的中文汉字的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#生成随机的中文汉字的原理是什么”吧!腾讯为了防止目前网络上横行的QQ号码自动注册机而采
2023-06-18

java原生序列化机制是什么

Java原生序列化机制是一种将对象转换成字节流的过程,以便在网络上进行传输或将对象保存到文件中。通过Java原生序列化机制,可以将对象转换成字节流进行传输或保存,然后再将字节流反序列化成对象,恢复对象的状态。Java原生序列化机制通过实现S
2023-10-11

Java虚拟机中的双亲委派机制怎么理解

Java虚拟机中的双亲委派机制怎么理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类
2023-06-22

Java中的SPI机制是什么

这篇文章主要介绍“Java中的SPI机制是什么”,在日常操作中,相信很多人在Java中的SPI机制是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的SPI机制是什么”的疑惑有所帮助!接下来,请跟
2023-07-05

C++虚函数的实现机制是什么

这篇文章主要讲解了“C++虚函数的实现机制是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++虚函数的实现机制是什么”吧!目录1、虚函数简介2、虚函数表简介3、有继承关系的虚函数表剖析
2023-06-20

MySQL中的锁机制是什么

这篇“MySQL中的锁机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL中的锁机制是什么”文章吧。一.概述锁
2023-07-05

ZooKeeper中的Watch机制是什么

ZooKeeper中的Watch机制是一种事件监听机制,用于通知客户端关于特定节点的状态变化。当客户端对某个节点注册了Watch事件后,如果该节点的状态发生变化(例如节点的数据被更新、节点被创建或被删除等),ZooKeeper会通知客户端,
ZooKeeper中的Watch机制是什么
2024-03-06

pytorch中的hook机制是什么

本篇内容介绍了“pytorch中的hook机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、hook背景Hook被成为钩子机制,这
2023-06-29

Java中的锁机制是什么

今天小编给大家分享一下Java中的锁机制是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Java中的锁机制是保证多线程并
2023-07-05

c++中的类实现了什么机制

类是 c++ 中封装数据的强大机制,提供数据抽象、对象、继承、多态和封装等关键机制,有助于增强程序的可重用性、模块化、安全性,并支持面向对象编程范例。C++ 中类的机制类是 C++ 中一种用于封装数据和函数的强大机制,它提供了以下几个关键
c++中的类实现了什么机制
2024-05-06

C++ 中继承和多态性的实现机制是什么?

c++++ 中继承和多态性的实现机制:继承:通过继承说明符实现,派生类继承并扩展基类行为。多态性:通过虚函数表实现,基类指针动态调用派生类方法。实现案例:通过继承和多态性,可以创建形状类层次结构并编写函数计算任何形状的总面积。C++ 中继承
C++ 中继承和多态性的实现机制是什么?
2024-05-24

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录