面试题答案
一键面试-
构造函数调用顺序:
Base1 constructor
Base2 constructor
Derived constructor
原因是在C++中,派生类构造函数在执行自身构造函数体之前,会先调用其基类的构造函数,调用顺序是按照基类在派生类定义中声明的顺序。
-
使用GDB调试器逐步跟踪构造函数调用过程的命令:
gdb <可执行文件名>
:启动GDB调试器并加载可执行文件。break Derived::Derived
:在Derived
类的构造函数处设置断点。run
:运行程序,程序会在Derived
类的构造函数处停下。up
:用于向上移动栈帧,可以观察到Derived
构造函数调用之前调用的基类构造函数。例如,通过多次执行up
命令,可以依次看到Base2
和Base1
构造函数的调用栈信息。bt
:打印当前的调用栈信息,这样可以直观地看到构造函数的调用顺序。