MST

星途 面试题库

面试题:C++类构造函数初始化列表的使用场景

请简述在C++中,类构造函数初始化列表适用于哪些场景?并举例说明。
27.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

适用场景

  1. 初始化常量成员:常量成员一旦初始化后就不能再修改,必须在构造函数初始化列表中进行初始化。
  2. 初始化引用成员:引用在定义时必须初始化,所以只能在构造函数初始化列表中初始化。
  3. 调用基类构造函数:当派生类需要调用基类的特定构造函数时,通过初始化列表传递参数给基类构造函数。
  4. 调用成员对象的构造函数:如果类中有成员对象,且该成员对象的构造函数需要参数,可在初始化列表中进行初始化。

示例

#include <iostream>

class Base {
public:
    Base(int value) : baseValue(value) {
        std::cout << "Base constructor with value: " << baseValue << std::endl;
    }
private:
    int baseValue;
};

class Derived : public Base {
public:
    // 初始化常量成员、引用成员、调用基类构造函数和成员对象构造函数
    Derived(int baseVal, int refVal) : Base(baseVal), ref(refVal), constValue(10), memberObj(baseVal + refVal) {
        std::cout << "Derived constructor" << std::endl;
    }
private:
    int& ref;
    const int constValue;
    Base memberObj;
};

int main() {
    int temp = 5;
    Derived d(3, temp);
    return 0;
}

在上述代码中:

  • Derived类通过初始化列表调用Base类的构造函数来初始化基类部分。
  • 初始化了引用成员ref和常量成员constValue
  • 初始化了成员对象memberObj