MST
星途 面试题库

面试题:C++ 中构造函数调用顺序基础考察

假设有一个继承体系,基类Base有构造函数,派生类Derived继承自Base且也有构造函数,同时Derived类中还包含一个成员对象Member。请描述在创建Derived类对象时,Base类构造函数、Derived类构造函数以及Member对象构造函数的调用顺序,并简单说明原因。
41.2万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 调用顺序
    • 首先调用Base类的构造函数。
    • 然后调用Member对象的构造函数。
    • 最后调用Derived类的构造函数。
  2. 原因
    • 基类的构造函数先调用,是因为派生类对象包含基类子对象,必须先初始化基类部分,才能正确构建派生类对象。在C++中,对象的基类部分被视为派生类对象的一部分,先初始化基类部分符合对象构建的逻辑顺序。
    • Member对象构造函数在基类构造函数之后调用,是因为在构建派生类对象时,需要先确保基类部分已初始化,再初始化派生类自身的成员对象。成员对象是派生类对象的组成部分,且在基类初始化后进行初始化。
    • 最后调用派生类Derived的构造函数,此时基类部分和成员对象都已初始化完毕,派生类构造函数主要用于完成派生类特有的初始化操作,例如对派生类新增成员变量的初始化等。