MST

星途 面试题库

面试题:C++类构造函数自动调用的顺序问题

假设有如下C++代码:class Base { public: Base() { std::cout << "Base constructor" << std::endl; } }; class Derived : public Base { public: Derived() { std::cout << "Derived constructor" << std::endl; } }; int main() { Derived d; return 0; } 请描述程序执行时构造函数的调用顺序,并解释为什么会这样调用。
26.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 构造函数调用顺序
    • 首先调用Base类的构造函数。
    • 然后调用Derived类的构造函数。
  2. 原因解释
    • 在C++中,当创建一个派生类对象时,会首先调用其基类的构造函数。这是因为派生类对象包含了基类对象的部分(继承的成员),必须先初始化基类部分,才能正确地初始化派生类特有的部分。所以先执行Base类的构造函数输出Base constructor,再执行Derived类的构造函数输出Derived constructor