MST

星途 面试题库

面试题:C++中类对象成员初始化先后顺序相关问题

假设有如下C++代码: ```cpp class A { public: int a; A(int val) : a(val) {} }; class B { public: A objA; int b; B(int aVal, int bVal) : b(bVal), objA(aVal) {} }; ``` 请描述在创建 `B` 类对象时,`objA` 和 `b` 的初始化先后顺序,并解释原因。
15.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 初始化先后顺序objA 先于 b 初始化。
  2. 原因:在C++ 中,类成员变量的初始化顺序与它们在类中声明的顺序一致,而不是按照构造函数初始化列表中的顺序。在 class B 中,objA 声明在前,b 声明在后,所以在创建 B 类对象时,objA 先被初始化,然后才是 b