目录
判断题:
2.多重继承派生类的构造函数,需要调用所有的基类构造函数来完成各基类数据成员的初始化。正确
在多重继承中,派生类的构造函数与单继承下派生类构造函数相似,它必须负责该派生类所有基类构造函数以及对象成员(如果有的话)构造函数的调用。同时,
派生类的参数必须包含完成所有基类、对象成员以及派生类中新增数据成员初始化所需的参数。派生类构造函数执行顺序如下:
(1)所有基类的构造函数,多个基类构造函数的执行顺序取决于定义派生类时所指定的顺序,与派生类构造函数中所定义的成员初始化列表的参数顺序无关;
(2)对象成员的构造函数;
(3)派生类本省的构造函数。
加上虚基类后,它的初始化在语法上与一般多继承的初始化是相同的,但在调用构造函数的顺序上有点差别。
(1)先调用虚基类构造函数,然后调用非虚基类的构造函数。
(2)当同一层有多个虚基类,按照他们的声明顺序调用它们的构造函数;
(3)当虚基类是由非虚基类派生时,则先调用基类构造函数,再调用派生类构造函数。
————————————————
版权声明:本文为CSDN博主「acceptedwwh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/achiberx/article/details/41931405
10.如果函数的参数是基类对象或基类对象的引用,函数调用时的实参可以是派生类对象。正确如果公有派生,则可以用派生类对象给基类对象赋值,可以用派生类对象初始化基类的引用,可以用派生类对象的地址赋值给基类的指针,指向基类的指针或引用可以指向或引用派生类的对象《课本第170页》“指向派生类的指针如果指向基类,则可能访问不可预知的内存空间,也就是派生类增加的特殊属性或方法地址入口。 指向基类的指针如果指向派生类,其访问空间总是在派生类的内存空间的内部,不会越界。”
选择题:
6.以下说法正确的是?
A.派生类对象生成时,派生类的构造函数先于基类的构造函数执行; B.派生类对象消亡时,基类的析构函数先于派生类的析构函数执行; C.如果基类有无参构造函数,则派生类的构造函数就可以不带初始化列表;//因为可以不调用基类的构造函数,假如派生类没有新增数据成员,就一定不带初始化列表,如果派生类有新增数据成员,可以在初始化列表中初始化新增数据成员,也可以在函数体中如果基类的构造函数都是默认构造函数,不需要参数,那么派生类的构造函数可以不调用基类的构造函数,在这种情况下,如果派生类也不需要初始化新增数据成员,那么不用定义派生类的构造函数《课本第148页》 D.在派生类的构造函数中,可以访问基类的成员变量//假如是私有继承,私有访问
9.一个类的私有成员:
A.只能被该类的成员函数访问; B.只能被该类的成员函数和友元函数访问; C.只能被该类的成员函数、友元函数和派生类访问; D.以上答案都不对 //基类的数据成员通常具有private属性的私有成员,而私有成员在派生类中成为不可访问成员,不能在派生类中直接访问《课本第147页》
10.C++语言类体系中, 不能被派生类继承的《课本第140页》 //基类的构造函数、析构函数、赋值运算符重载函数不能被基类继承
A.转换函数; B.构造函数; C.虚函数; D.静态成员函数
静态成员函数和非静态成员函数都可以被继承
11.可以用p.a的形式访问派生类对象p的基类成员a, 其中a是
A.私有继承的公有成员;//private成员 B.公有继承的私有成员; //不可访问成员 C.公有继承的保护成员;protected成员 D.公有继承的公有成员 课本第147页
17.在创建派生类对象时,构造函数的执行顺序是( )。
A.对象成员构造函数、基类构造函数、派生类本身的构造函数; B.基类构造函数、对象成员构造函数、派生类本身的构造函数; C.基类构造函数、派生类本身的构造函数、对象成员构造函数; D.派生类本身的构造函数、基类构造函数、对象成员构造函数
基类的构造函数------>成员对象的构造函数------>派生类的构造函数
派生类的析构函数------>成员对象的析构函数------>基类的析构函数
18.多继承是指()。
A.一个派生类同时继承多个基类; B.多个派生类同时继承一个基类;
其他:
1.类继承缩短了程序开发的时间,但从头开始设计类与借助类的继承机制相比,在运行时哪个的耗费的时间短;
2.尝试了类的4层继承,结果就是电脑卡机,而且卡机之前怎么也编译不结束,就卡在一个文件一遍又一遍地编译;