首页 > 试题广场 >

建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b

[单选题]
建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为: 
  • abc
  • acb
  • cab
  • cba
推荐
答案:A 在继承中派生类的对象调用构造函数的顺序,应该是先调用基类的构造函数,然后是成员中的对象对应类的构造函数,最后是派生类自己的构造函数.
编辑于 2015-03-24 09:41:06 回复(2)
先父母,再客人,后自己。
发表于 2017-06-30 15:39:56 回复(7)
vs2015企业版
发表于 2016-07-19 23:36:44 回复(6)
先父母,后客人,再自己
发表于 2018-05-09 20:29:51 回复(0)
成员对象的构造函数是什么意思?求大佬们解释
发表于 2018-05-19 11:22:42 回复(0)
这题答案不太对,虽然最后出来的顺序是先基类最后调派生类。但是实际上是先调用派生类的构造函数,然后在派生类的初始化列表中在调用基类的构造函数。所以这道题有问题!
发表于 2017-08-14 17:47:05 回复(1)
根据程序测试,先调用的是基类的成员对象的构造函数,再调用的基类的构造函数,最后调用派生类的构造函数,答案应该是:bac,但是标准答案上没有
发表于 2015-06-17 13:13:30 回复(7)
成员对象的构造函数:
#include<iostream>
(3149)#include<string>
class A{
private:
   string str;
};
中的str在初始化时调用string类的构造函数.
就是这个意思
发表于 2020-03-20 19:19:24 回复(0)
先调用父类(包括父类的成员函数),再调用子类,即先基类再派生类,而析构函数却相反,这样比较好记
发表于 2017-05-21 16:59:08 回复(0)
正确答案是C,创建子类对象时先调用子类构造函数,然后在子类构造函数初始化列表部分隐式调用基类构造函数,然后是成员中的对象对应类的构造函数。直接打印的结果不对要调试才能看到。这里有详细解释 http://www.cnblogs.com/33debug/p/6685551.html
编辑于 2017-08-18 15:57:41 回复(1)
如果成员对象是基类的数据成员,结果是BAC;
如果成员对象是派生来的数据成员,结果是ABC
发表于 2022-10-17 14:54:50 回复(0)
求问,难道不应该先有派生类,采有派生类的对象吗?所以我认为是先c后b   ,哪里错了呀。。。。。
发表于 2021-04-22 09:42:01 回复(0)
先父母,再客人,在自己
发表于 2021-04-08 15:41:12 回复(0)
想了半天成员对象是啥  这不叫成员变量么
发表于 2020-12-27 10:55:32 回复(0)
创建派生类对象时,先执行父类的构造函数,再执行成员对象的构造函数,再执行本类的构造函数
发表于 2020-10-15 23:16:00 回复(0)
我觉得这道题的答案还是有些问题,像这位朋友的答案上的测试,



编译器在编译构造函数的时候在所有用户代码之前安插了类成员变量的初始化(如果有虚函数的话,在所有用户代码之前就会生成这个虚函数指针),如果不先调用C()的话,B的无参构造函数是不会被调用的。所以虽然输出的是ABC,但是这道题我觉得应该选B,毕竟问的是调用的顺序

个人看法,欢迎讨论
编辑于 2018-05-12 11:11:25 回复(0)
敲了代码,结论如下:
如果b是a的成员变量的话,顺序是bac   (不懂为什么是先成员变量初始化)

如果b是c的成员变量的话,顺序是abc

望大佬们斧正。
发表于 2017-10-11 17:31:05 回复(1)
VS 2017
发表于 2017-09-16 19:55:49 回复(0)
先调用基类构造函数,再调用派生类构造函数,最后为每个数据成员分配存储空间
发表于 2017-08-25 22:43:03 回复(0)
构造函数调用顺序是:
基类构造函数、成员对象构造函数、派生类构造函数
析构函数调用顺序恰好相反:
派生类析构、成员对象析构、基类析构
发表于 2017-04-18 15:08:38 回复(0)
这不是java题吧,java不是想什么时候调super就什么时候调?
发表于 2015-09-13 10:18:03 回复(1)