MST

星途 面试题库

面试题:C++中哪些场景必须使用初始化成员列表

请详细列举至少三种在C++编程中必须使用初始化成员列表的场景,并各举一个简单代码示例说明。
40.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 初始化引用成员变量 在C++中,引用必须在定义时初始化,因此当类中有引用成员变量时,必须使用初始化成员列表。
class RefClass {
public:
    int& ref;
    RefClass(int& value) : ref(value) {}
};
  1. 初始化const成员变量 const类型的成员变量一旦初始化后就不能再修改,所以必须在构造函数的初始化列表中初始化。
class ConstClass {
public:
    const int num;
    ConstClass(int value) : num(value) {}
};
  1. 调用基类的带参数构造函数 当派生类构造函数需要调用基类的带参数构造函数时,需要在初始化成员列表中进行。
class Base {
public:
    int baseValue;
    Base(int value) : baseValue(value) {}
};
class Derived : public Base {
public:
    Derived(int value) : Base(value) {}
};
  1. 初始化成员对象(该对象所属类没有默认构造函数) 如果类中包含一个成员对象,而该成员对象所属的类没有默认构造函数,那么必须在初始化列表中初始化该成员对象。
class MemberClass {
public:
    int data;
    MemberClass(int value) : data(value) {}
};
class OuterClass {
public:
    MemberClass member;
    OuterClass(int value) : member(value) {}
};