`

JAVA/C++: 基类和派生类的初始化顺序

阅读更多

Java:

基类的成员变量-->基类的构造函数-->派生类的成员变量-->派生类的构造函数


C++:

1.     如果类里面有成员类,成员类的构造函数优先被调用;

2.     创建派生类的对象,基类的构造函数优先被调用(也优先于派生类里的成员类);

3.     基类构造函数如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序而不是它们在成员初始化表中的顺序;

4.     成员类对象构造函数如果有多个成员类对象,则构造函数的调用顺序是对象在类中被声明的顺序而不是它们出现在成员初始化表中的顺序;

5.     派生类构造函数,作为一般规则派生类构造函数应该不能直接向一个基类数据成员赋值而是把值传递给适当的基类构造函数 , 否则两个类的实现变成紧耦合的( tightly coupled )将更加难于正确地修改或扩展基类的实现。

分享到:
评论

相关推荐

    按以下描述和要求建立两个类:基类 Rectangle(矩形类) 和派生类 Cube(正方体)

    在这个编程任务中,我们需要创建两个类,一个基类 `Rectangle` 表示矩形,一个派生类 `Cube` 表示正方体。以下是详细的知识点解释: 1. **基类 Rectangle** - `Rectangle` 类有四个私有成员变量 `x1`, `y1`, `x2`,...

    Linux C/C++线程基类源代码

    例如,基类可能有一个构造函数,用于初始化线程对象,并接受一个可选的回调函数或函数指针作为参数。这个回调函数是线程执行的主要工作逻辑。另外,基类可能会包含一个`start()`函数,用于启动线程,以及一个`join()...

    基类和派生类 面向对象程序设计 C++ 实验报告

    "基类和派生类 面向对象程序设计 C++ 实验报告" 本实验报告的主要内容是设计和实现基类和派生类的面向对象程序设计,使用 C++ 语言实现。实验内容包括设计 person 类和其派生类 student,实现继承机制的应用。 ...

    c++派生类必须初始化的情况

    在C++编程中,派生类是通过继承基类的属性和方法来创建新的类。在派生类的构造函数中,有时需要显式地调用基类的构造函数来初始化基类的数据成员,这就是所谓的基类构造器的调用。在某些特定情况下,必须使用初始化...

    详解C++中基类与派生类的转换以及虚基类

    C++基类与派生类的转换 在公用继承、私有继承和保护继承中,只有公用继承能较好地保留基类的特征,它保留了除构造函数和析构函数以外的基类所有成员,基类的公用或保护成员的访问权限在派生类中全部都按原样保留下来...

    c++例题关于基类与派生类

    在C++编程语言中,继承是一种非常重要的面向对象编程特性,它允许我们定义一个类(派生类)从另一个类(基类)那里继承属性和方法。这种机制使得代码更加模块化、可重用,并有助于创建更加清晰、易于理解的类层次...

    C++继承与派生类习题.pdf

    在C++编程语言中,继承和派生是面向对象编程的重要特性,它们允许创建新的类(派生类)从已存在的类(基类)中继承属性和行为。这些概念是构建复杂类体系的基础,帮助实现代码重用和封装。 1. 继承的基本概念: - ...

    C++程序 类的派生

    C++支持一个派生类从多个基类派生,这称为多重继承。这种方式可以组合多个基类的特性,但可能导致命名冲突(菱形问题),需要使用虚基类来解决。 **5. 虚函数与虚继承** - **虚函数**:基类中声明为虚函数的方法,...

    武汉大学c++第五次上机试题.doc

    3. 类的继承体系中,基类和派生类构造函数之间的关系:在派生类的构造函数中,需要显示调用基类的构造函数,以确保基类的成员变量被正确初始化。 4. 类的继承体系中,基类和派生类析构函数之间的关系:在派生类的析...

    C++\测试 对象成员构造函数、基类构造函数、派生类本身的构造函数 的先后顺序.rar

    这个顺序保证了对象的构造过程自底向上,从成员到基类再到派生类,确保每个部分都在正确的时间被初始化。了解这个顺序对于调试和避免错误至关重要,特别是当涉及到复杂的继承层次结构和资源管理时。通过理解这一顺序...

    C++派生类的构造函数

    这是因为对象的初始化是从基类到派生类的顺序进行的,保证了先初始化基类的部分,再初始化派生类的部分。 4. 默认构造函数与带参数的构造函数:如果基类没有默认构造函数,而派生类的构造函数没有明确调用任何基类...

    高级语言程序设计基础(C&C++):模块10 派生类与继承.ppt

    【派生类与继承】是面向对象编程中的核心概念,主要应用于C++和许多其他高级编程语言中。继承允许我们创建新的类(派生类),这些类基于已存在的类(基类),并能够继承基类的特性。这种机制有助于代码重用和结构化...

    C++继承与派生类习题 (2).pdf

    9. 初始化列表:派生类构造函数的初始化列表用于初始化基类数据成员以及派生类中新增的数据成员,包括内嵌对象和一般成员数据。 10. 类成员的访问权限:在给定的例子中,派生类C的成员访问权限如下: - 私有成员:...

    C++继承与派生类习题 (2).docx

    - 派生类构造函数的初始化列表用于初始化基类和新增加的数据成员,包括子对象和一般成员。 10. **访问权限的继承**: - 在类`C`的示例中: - 私有成员:`C1`、`C2`、`C3` - 保护成员:`A2`、`b2`、`c2` - 公有...

    在派生类的构造函数中调用基类的构造函数

    在创建派生类的对象时,需要确保基类的数据成员和成员函数也得到正确的初始化。这就涉及到了在派生类的构造函数中调用基类构造函数的知识点。 首先,每个类都有一个构造函数,它在对象创建时自动执行,用于初始化类...

    C++继承与派生类习题.docx

    在C++编程语言中,继承和派生是面向对象编程的重要特性,它们允许创建新的类(派生类)基于已存在的类(基类),从而实现代码重用和类的分级结构。以下是对这些知识点的详细解释: 1. **继承与派生**: - 继承是指...

    C++继承及派生类习题.doc

    在C++编程语言中,继承和派生是面向对象编程的重要特性,它们允许创建新的类(派生类)基于已存在的类(基类),从而实现代码重用和类的层次结构。以下是对这些知识点的详细解释: 1. **继承的概念**: 继承是一种...

    用c++ 定义一个车(Vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)

    ### C++ 中定义 Vehicle 基类及其派生类 #### 一、需求概述 根据题目要求,我们需要设计一个 `Vehicle` 基类,并基于此基类派生出两个子类:`Bicycle`(自行车)和 `Motorcar`(汽车)。进一步地,我们还需要从这两...

    C++中基类和派生类之间的转换实例教程

    在C++中,基类和派生类之间的转换是面向对象编程的重要概念,这涉及到类的继承和多态性。本教程将详细讲解这个主题,帮助开发者深入理解C++的面向对象特性。 首先,我们要明白派生类是基类的扩展,它包含了基类的...

    C++继承与派生课件

    派生类会自动调用基类的构造函数来初始化基类的部分。如果基类有非默认的构造函数,需要在派生类构造函数中显式调用。同样,派生类的析构函数会在自身析构后调用基类的析构函数。 5. **类成员的标识与访问**: ...

Global site tag (gtag.js) - Google Analytics