2.组合关系的派生类的构造函数 假定派生类A和类B的关系是组合关系, 类A中有类B的子对象。 如果类B有默认构造函数(没有参数的构造函数), 或者参数全是默认参数的构造函数, 或者有无参数的构造函数, 那么类A的构造函数中可以不用显式初始化子对象。 编译器总是会自动调用B的构造函数进行初始化。 可以在一个...
以上面的 A、B、C 类为例,C 是最终的派生类,B 就是 C 的直接基类,A 就是 C 的间接基类。 C++ 这样规定是有道理的,因为我们在 C 中调用了 B 的构造函数,B 又调用了 A 的构造函数,相当于 C 间接地(或者说隐式地)调用了 A 的构造函数,如果再在 C 中显式地调用 A 的构造函数,那么 A 的构造函...
1#include <iostream>2usingnamespacestd;3classA4{5public:6A(inta) :dataA(a){ cout <<"调用A的构造函数"<<endl; }7private:8intdataA;9};10classB:publicA11{12intdataB;13public:14B(intb,inta) :A(a), dataB(b) { cout <<"调用B的构造函数"<<endl; }15};16voidmain()17{18B b(2,...
创建对象 stu1 时,执行派生类的构造函数Student::Student(),它并没有指明要调用基类的哪一个构造函数,从运行结果可以很明显地看出来,系统默认调用了不带参数的构造函数,也就是People::People()。 创建对象 stu2 时,执行派生类的构造函数Student::Student(char *name, int age, float score),它指明了基类的构...
派生类的构造函数只负责对派生类新增的成员进行初始化,对所有从基类继承下来成员,其初始化工作还是由基类的构造函数完成。同样,对派生类对象的扫尾、清理工作也需要加入新的析构函数。 1、构造函数 构造派生类的对象时,就要对基类数据成员、新增数据成员和成员对象的数据成员进行初始化。派生类的构造函数需要以合适的初...
在C++中,派生类的构造函数是一种特殊的函数,用于初始化派生类的对象。本文将介绍派生类的构造函数的基本概念、特点和使用方法。 一、派生类的构造函数的基本概念 派生类的构造函数是一种特殊的函数,它用于初始化派生类的对象。它可以调用基类的构造函数来初始化基类的成员变量,也可以初始化派生类自己的成员变量。
定义派生类对象的时候,会按如下步骤执行构造操作: 1)传参 2)根据继承时的声明顺序构造基类 3)给类数据成员开辟空间 4)执行冒号语法后面的语句 5)执行构造函数函数体语句 1classBase2{3public:4Base(intb) : m_b(b)5{6}7private:8intm_b;9};1011classDerived :publicBase12{13public:14//普通派生类构...
下列关于派生类构造函数和析构函数的叙述中,错误的是 A. 派生类的构造函数会隐含调用基类的构造函数 B. 如果基类中没有默认构造函数,那么派生类必须定义构造函数 C. 在
派生类中一般数据成员的初始化 D. 基类的子对象初始化 相关知识点: 试题来源: 解析 输入两个学生的成绩,然后从小到大输出。(利用指针) #include void sort(int *p1,int *p2); /* 函数声明 */ int main() { int score1=90, score2=85; printf("排序前score1=%d, score2=%d\n",score1,score2...
[解析] 本题考核构造函数。在C++中,构造函数不能被继承,因此,派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数.但是...