首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我在C++中派生一个类时,它是否创建了一个基类对象并将其作为我的成员变量存储在派生类中?

当在C++中派生一个类时,派生类会包含基类的成员变量,但并不会创建一个基类对象并将其作为成员变量存储在派生类中。

在C++中,派生类继承了基类的成员变量和成员函数,但是这些成员变量和成员函数是直接嵌入到派生类中的,而不是通过创建基类对象来存储。

派生类会继承基类的成员变量,并且可以通过派生类的对象访问这些成员变量。派生类可以在自己的定义中添加新的成员变量和成员函数,以扩展基类的功能。

在派生类的构造函数中,可以通过调用基类的构造函数来初始化继承的基类成员变量。这样,当创建派生类的对象时,基类的构造函数会被调用来初始化基类成员变量。

总结起来,当在C++中派生一个类时,派生类会包含基类的成员变量,但并不会创建一个基类对象并将其作为成员变量存储在派生类中。派生类通过继承基类的成员变量和成员函数来扩展基类的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

后台开发:核心技术与应用实践 -- C++

// 函数调用 声明一个引用变量,必须同时使之初始化,即声明代表哪个变量,函数执行期间,不可以将其作为其他变量引用。...静态数据成员是属于范围内有效。因为不管产生了多少对象静态数据成员都有着单一存储空间,所以存储空间必须定义一个单一地方。...同时,无论哪一种继承方式,派生类是不能访问私有 成员,私有成员只能被本类成员函数所访问,毕竟派生类不是同一个 构造派生类对象,必须对数据成员、新增数据成员成员对象数据成员进行初始化...派生派生类是不能继承析构函数,也需要通过派生类析构函数去调用析构函数。...执行派生类析构函数,系统会自动调用析构函数和子对象析构函数,对和子对象进行清理。

1.3K10

C++高阶】C++继承学习手册:全面解析继承各个方面

前言: 当我们踏上C++编程旅程,继承无疑是一个无法回避且至关重要概念。作为面向对象编程三大特性之一,继承不仅让我们能够创建出层次清晰、结构合理代码,还极大地提高了代码可重用性和可维护性。...本文中,我们将一起深入探讨C++继承奥秘,从基础概念到高级应用,逐步揭开神秘面纱 C++继承允许我们定义一个(或称为父),并从这个派生出新(称为派生类、子类)。...这里不可见是指私有成员还是被继承到了派生类对象,但是语法上限制派生类对象不管里面还是外面都不能去访问 private成员派生类是不能被访问,如果成员不想在外直接被访问,但需要在派生类能访问...寓意把派生类那部分切来赋值过去 对象不能赋值给派生类对象 我们C++入门知识时候讲过,引用类型不同变量,会产生一个临时变量,临时变量具有常性,需要const修饰,但是继承中就不需要...具体来说,虚拟继承会在内存创建一个表,并在派生类对象存储一个指向这个虚指针(即虚表指针)。虚偏移量。通过偏移量可以找到下面的A,而无需派生类对象多次存储这些数据成员

12310

【Python 入门第十五讲】OOP(面向对象)思想

self 作用 Python 中使用,术语“self”是指当前正在使用实例。习惯上使用“self”作为实例方法一个参数。...每当调用从创建对象方法,该对象都会使用“self”参数自动作为一个参数传递。这使您能够修改对象属性执行该特定实例特有的任务。...当我们调用该方法,我们不会为此参数提供值,Python 提供了 如果我们有一个不带参数方法,那么我们仍然必须有一个参数。 这类似于 C++ 此指针和 Java 此引用。...派生属性称为派生类或子类,派生属性称为或父。继承好处是: 很好地代表了现实世界关系。 提供了代码可重用性。我们不必一遍又一遍地编写相同代码。...是封装一个例子,因为封装了所有数据,即成员函数、变量等。 Python 封装 在下面的示例,我们创建了 c 变量作为私有属性。我们甚至无法直接访问此属性,甚至无法更改其值。

20220

C++关键知识点梳理

,未初始化变量含有一个不确定值,所以定义变量最好初始化,成员使用初始化列表构造函数初始化均是良好编程习惯;变量定义和声明:变量可以多个文件声明(external int i),但是只能在一个文件中被定义...protected继承方式所有 public 成员派生类为 protected 属性;所有 protected 成员派生类为 protected 属性;所有 private...private继承方式所有 public 成员派生类均为 private 属性;所有 protected 成员派生类均为 private 属性;所有 private 成员派生类不能使用...每个虚继承子类都有一个指针(占用一个指针存储空间,4字节)和虚表(不占用对象存储空间)当派生类重新定义虚函数,则将派生类虚函数地址添加到虚函数表。...当一个指针指向一个派生类对象,虚函数表指针指向派生类对象虚函数表。当调用虚函数,由于派生类对象重写了派生类对应虚函数表项,调用时会调用派生类虚函数,从而产生多态。

93330

《C++Primer》第十五章 面向对象程序设计

负责定义层次关系中所有共同拥有的成员,而每个派生类定义各自持有的成员C++将类型相关函数与派生类不做改变直接继承函数区分对待。...前者通常将其定义为虚函数virtual,当我们使用指针或者引用调用虚函数,该调用将被动态绑定 任何构造函数之外非静态函数都可以是虚函数 如果一个函数声明成虚函数,那么该函数派生类隐式地也是虚函数...无论派生出多少个派生类,对于每个静态成员来说都只存在一个唯一实例。 2.4 防止继承发生 有时我们会定义这样一个,不希望其他继承,或者不想考虑它是否适合作为一个。...该对象可能是对象,也可能是派生类对象。 3.1 静态类型与动态类型 当我使用存在继承关系关系,必须将一个变量或其他表达式静态类型与该表达式表示对象动态类型区分开来。...当我们用一个派生类对象一个对象初始化或赋值,只有该派生类对象部分会被拷贝、移动或赋值,派生类部分将会被忽略掉。

1.2K20

C++】继承

private成员 private成员 派生类不可见 派生类不可见 派生类不可见 表格内容可以概述为:私有成员子类都不可见,其他成员子类访问方式等于成员访问权限与继承方式取较小值...这里不可见是指私有成员还是被继承到了派生类对象,但是语法上限制派生类对象不管里面还是外面都不能去访问,而不是派生类没有继承该成员。...如图所示:派生类对象赋值给对象是直接将派生类属于那一部分切割给,引用和指针也是一样,引用是派生类属于那一部分成员别名,指针指向派生类属于那一部分。.../赋值等) ,我们手动将其一个对象类型转换为另一个对象类型,使得二者能够顺利进行比较; 而隐式类型转换则是指当两个不同类型变量之间进行运算,编译器会自动将其一个变量类型转换为另一个变量类型...; 2、同时,为了切片场景下也能够找到虚,虚继承对象中会存储一个表指针,虚表里面存储了虚继承对象存储地址与虚地址偏移量;虚继承对象可以根据这个偏移量来找到虚

85900

C++系列笔记(五)

这就是多态:将派生类对象视为对象执行派生类Swim()实现。...为什么需要虚构函数 上面的代码如果加入析构函数释放内存,对于使用new自由储存区实例化派生类对象,如果将其赋值给指针,通过该指针调用delete,将不会调用派生类析构函数,这可能导致资源未释放...new自由存储实例化,还是以局部变量方式实例化,构造函数和析构函数调用顺序都相同。...抽象和纯虚函数 不能实例化被称为抽象,这样只有一个用途,那就是从派生出其他 C++,要创建抽象,可声明纯虚函数。...注意:C++关键字virtual含义随上下文而异(想这样做目的很可能是为了省事),对其含义总结如下: 函数声明,virtual意味着当指针指向派生对象,通过它可调用派生类相应函数。

65730

c++和继承面试点25连问

,先调用构造函数,再调用派生类构造函数; 派生类对象销毁,先调用派生类析构函数,再调用析构函数。...运行时多态简单来讲就是:使用指针或者引用指向一个派生类对象非虚继承情况下,派生类直接继承虚表指针,然后使用派生类虚函数去覆盖虚函数,这样派生类对象通过虚表指针访问到虚函数就是派生类虚函数了...友元是什么 与友元函数类似,一个A声明另外一个B为friend类型,那么这个B就是友元访问A私有成员和保护成员都不受限制。...多重继承对象内存布局 非虚继承,按照继承顺序存储,虚继承,虚内容放在一块内存最后面存储。 详细看之前这篇文章:c++头脑风暴-多态、虚继承、多重继承内存布局 21....由成员变量是否有虚函数决定,如果类中有虚函数,那就在所有成员变量基础上加上一个虚函数指针大小,64位机器,虚函数指针为8个字节,注意计算大小时候要考虑字节对齐问题。

90910

封装、继承、多态、重载:C++强大特性与代码设计

继承 C++继承是面向对象编程一个重要概念,允许一个派生类/子类)从另一个/父)继承属性和行为。...成员声明列表包含成员变量以及成员函数,是派生类新增成员。 “:”是一个运算符,表示派生类之间继承关系。...C++继承有以下几种类型: 公有继承(public inheritance):派生类继承了公有成员和保护成员,并且这些成员派生类访问权限与一样。...派生类对象可以直接访问公有成员。 私有继承(private inheritance):派生类继承了公有成员和保护成员,但是这些成员派生类访问权限变为私有。...旧被称为或者父,新被称为派生类或者子类。 多态 C++多态是面向对象编程一个重要概念,允许使用指针或引用来处理不同类型对象,而实际上执行是根据对象类型动态选择相关操作。

23210

硬核 | C++ 基础大全

当我们定义一个派生类对象,编译器检测该类型有虚函数,所以为这个派生类对象生成一个虚函数指针,指向该类型虚函数表,这个虚函数指针初始化是构造函数完成。...,也称为某个派生类 查看派生类是否有重写虚函数, 如果有,就替换成已经重写虚函数地址;查看派生类是否有自身虚函数,如果有,就追加自身虚函数到自身虚函数表。...派生类重写了这个虚函数,我们期望着根据对象真实类型不同,而调用各自实现虚函数,但实际上当我们创建一个派生类对象,首先会创建派生类部分,执行构造函数,此时,派生类自身部分还没有被初始化...也就是说构造派生类部分是,编译器会认为这就是一个类型对象,然后调用类型虚函数实现,并没有按照我们想要方式进行。即对象派生类构造函数执行前并不会成为一个派生类对象。...析构函数也是同理,派生类执行了析构函数后,派生类自身成员呈现未定义状态,那么执行析构函数是不可能调用到派生类重写方法

1.2K10

C++ 一篇搞懂继承常见特性

— 1 — 继承和派生 || 01 继承和派生概念 继承: 定义一个 B ,如果该类与某个已有的 A 相似(指的是 B 拥有 A 全部特点),那么就可以把 A 作为一个,而把B作为一个派生类...派生类派生类是通过对进行修改和扩充得到派生类,可以扩充新成员变量成员函数。 派生类拥有全部成员函数和成员变量,不论是private、protected、public。...(){} // 是否是大数据领域 }; ---- || 04 派生类对象内存空间 派生类对象,包含着对象,而且对象存储位置位于派生类对象新增成员变量之前,相当于对象是头部。...---- — 3 — 派生类覆盖其他成员 派生类(子类)可以定义一个(父成员同名成员,这叫「覆盖」。 派生类(子类)访问这类成员,默认情况是访问派生类定义成员。...从上面的例子我们也得知构造派生对象前,是先构造对象,那么析构时候依然依据“先构造,后初始化”原则,所以派生类析构,会先执行派生类析构函数,再执行析构函数。

56130

《Effective C++》读书笔记(二):构造析构赋值运算(条款05~条款12)

---- 1.条款05:了解C++默默编写调用哪些函数 说白了,看到这个条款,就马上想到了对象六个默认成员函数:构造函数、析构函数、拷贝构造函数、赋值重载、普通对象和const对象取地址重载...virtual析构函数 在看到这个条款,立马就会想到意思了:那就是多态,给析构函数声明为virtual虚函数,这样就会保证资源不会被泄漏,因为当指针或者引用指向了派生类对象析构时候...() { Corgi co; return 0; } 分析代码: 代码,用派生类建了一个派生类对象构造函数被调用时候,会先去构造成分,然后才会去构造派生类从成分,这就意味着,会先去调用构造函数...同样,对于析构函数也一样,由于是先析构派生类成分,派生类析构函数执行时候,对象派生类成员变量就是变成了未定义值,C++是它们不存在,而进入了析构函数,就会变成对象。...,正是因为派生类成员变量没有初始化,所以构造和析构期间调用virtual函数不可以下降到派生类阶层。

34110

Java编程思想第五版(On Java8)(一)-什么是对象

同时,我们也可以将一个对象作为一个成员变量使用。新可以是由任意数量和任意类型其他对象构成。...这种新类型不仅包含现有类型所有成员(尽管私有成员被隐藏起来并且不可访问),而且更重要复制了接口。也就是说,对象接收所有消息也能被派生类对象接收。...这意味着派生类不仅具有相同类型,而且具有相同行为,这么做没什么特别意义。 有两种方法可以区分新派生类与原始。第一种方法很简单:派生类添加新方法。这些新方法不是接口一部分。...我们经常把这种派生类关系称为是一个(is-a)关系,因为可以说"圆是一个形状"。判断是否继承,就看在你之间有无这种 is-a 关系。 有时你派生类添加了新接口元素,从而扩展接口。...单继承结构 自从 C++ 引入以来,一个 OOP 问题变得尤为突出:是否所有的都应该默认从一个继承呢?这个答案 Java 是肯定(实际上,除 C++ 以外几乎所有OOP语言中也是这样)。

73830

QT(C++)面试总结

单继承和多继承 单继承(派生类只从一个直接继承)派生类定义: class 派生类名:继承方式 名 { 新增成员声明; } 多继承派生类定义: class 派生类名:继承方式1...2)访问权限 派生类成员函数:可以直接访问public和protected成员,但不能直接访问private成员; 通过派生类对象:只能访问public成员。...3)公有派生类对象可以被当作对象使用,反之则不可。 派生类对象可以隐含转换为对象派生类对象可以初始化引用; 派生类指针可以隐含转换为指针。...通过对象名、指针只能使用从继承成员派生类新增成员就不能使用了 Qt4与Qt5三个区别 1.新增widgets模块 Qt4,Qt提供全部图形界面相关都包含在Qt Gui模块...C++,实现多态有以下方法:虚函数,抽象,覆盖,模板(重载和多态无关)。 C++ (纯虚函数和抽象) a. 纯虚函数是一个只有声明虚函数,无定义。

1.9K10

C++复习大全(各种知识点)

,会在函数作用域结束自动消失,当我们下一次调用这个函数,会重新创建该变量存储空间,值也会被重新初始化。...is -a 关系,没一个派生类对象都可以被当成对象来使用,这些派生类对象能对同一个函数调用做出不同反应,这就是运行时多态。 ...  经过隐含转型操作,令一个public多态指针或者引用指向一个派生类对象。...如果已经插入了vfptr,则派生类将继承和重用该vfptr如果派生类从多个继承或者有多个继承分支,而其中若干个继承分支上出现了多态,则派生类将从这些分支每个分支上继承一个vfptr,编译器也将为生成多个...- 构造函数重载,当我们想要初始化对象不同个数数据,我们就可以同时声明外定义多个构造函数。

1K20

C++面试知识总结

多态:通过继承同一个,产生了相关不同派生类,与同名成员函数不同派生类中会有不同实现,也就是说:一个接口、多种方法。...3.5 和子类构造、析构顺序 定义一个对象先调用构造函数、然后调用派生类构造函数 先派生类析构后析构,也就是说析构调用时候,派生类信息已经全部销毁了 3.6 深拷贝与浅拷贝区别...,派生类成员函数可以访问公有和受保护成员;公有继承受保护成员,可以通过派生类对象访问但不能修改。...私有继承成员只能被直接派生类成员访问,无法再往下继承。 受保护继承成员也只被直接派生类成员访问,无法再往下继承。...一个引用可以指向派生类实例。 3.12 static成员变量和static成员函数 static数据成员独立于该类任意对象而存在。

1.7K41

C++修炼之路】15.C++继承

成员 派生类private成员 protected成员 派生类protected成员 派生类protected成员 派生类private成员 private成员 派生类不可见 派生类不可见...派生类不可 总结: private成员派生类无论以什么方式继承都是不可见。...这里不可见是指私有成员还是被继承到了派生类对象,但是语法上限制派生类对象不管里面还是外面都不能去访问。...不写自动生成又是否可以呢?放在开头,下面的代码都是此派生类。...而Print作为成员函数,其不在而是代码段,因此算不上解引用,_count作为静态变量静态区不在当然也算不上解引用。

52300

C++之面向对象三个基本特征

派生类重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与虚函数相同,根据派生类需要重新定义函数体。...如果在派生类没有对虚函数重新定义,则派生类简单地继承其直接虚函数。 定义一个指向对象指针变量使指向同一需要调用该函数对象。...需要说明;有时定义非虚函数会在派生类中被重新定义(如例12.1area函数),如果用指针调用该成员函数,则系统会调用对象部分成员函数;如果用派生类指针调用该成员函数,则系统会调用派生类对象成员函数...,则不要把声明为虚函数;不要仅仅考虑到要作为而把所有成员函数都声明为虚函数。... main 函数,定义了类型指针 p,指向派生类对象,然后希望用 delete 释放 p 所指向空间。

1.1K60

C++-带你初步走进继承(1)

下面写了三个,Student和Teacher都继承了Person当我们调用监视窗口可以看到,Person里面的成员变量成员函数Student和Teacher中都有,并且Student...这里 不可见是指私 有成员还是被继承到了派生类对象,但是语法上限制派生类对象不管里面还是外面 都不能去访问 。 2....寓意把派生类那部分切来赋值过去。 对象不能赋值给派生类对象。 3.继承作用域 1. 继承体系 派生类 都有 独立作用域 。 2....Student对象s,调用了父构造和析构函数,这就说明了当派生类进行实例化时,会调用构造函数来构造派生类成员。  ...当我自己写了一个Student构造函数,那么怎么初始化成员呢?可以初始化列表调用构造函数,然后我们可以看到,是先调用了构造函数,再构造派生类成员

11410

C++】继承

这里 不可见是指私 有成员还是被继承到了派生类对象,但是语法上限制派生类对象不管里面还是外面 都不能去访问 。 2....三、派生类对象派生类类型转换 一个派生类对象包含多个组成部分:一个含有派生类自己定义(非静态)成员对象,以及一个与该派生类继承对应对象,如果有多个,那么这样子类对象也有多个...如上图所定义student对象拥有一个自己定义学号_No编号,还有继承自Person三个成员变量。...(注:c++标准没有明确规范派生类对象在内存如何分配,但是我们可以认为是如图分配一个对象,继承自部分和派生类自定义部分不一定是连续存储)。...也就是说当我访问_a时会直接访问到一个偏移量,根据这个偏移量我们可以找到D中所存独一份A。 8.2总结 1.很多人说 C++ 语法复杂,其实多继承就是一个体现。

9110
领券