MST

星途 面试题库

面试题:C++初始化成员列表的基础使用

请说明C++中初始化成员列表的基本语法格式,并通过一个包含成员变量(如int、自定义类对象)的类,展示如何使用初始化成员列表对这些成员变量进行初始化。
39.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

初始化成员列表基本语法格式

在C++中,初始化成员列表紧跟在构造函数的参数列表之后,使用冒号(:)分隔,多个成员变量的初始化之间用逗号(,)分隔。其语法格式如下:

ClassName::ClassName(parameters) : member1(initializer1), member2(initializer2), ... {
    // 构造函数体(可省略,若成员变量都在初始化列表中初始化)
}

示例代码

#include <iostream>

// 自定义类
class MyClass {
public:
    MyClass(int value) : data(value) {
        std::cout << "MyClass constructor called." << std::endl;
    }
    int getData() const {
        return data;
    }
private:
    int data;
};

class OuterClass {
public:
    // 使用初始化成员列表初始化成员变量
    OuterClass(int num, int myClassValue) : intVar(num), myObject(myClassValue) {
        std::cout << "OuterClass constructor called." << std::endl;
    }

    void printInfo() const {
        std::cout << "intVar: " << intVar << ", MyClass data: " << myObject.getData() << std::endl;
    }

private:
    int intVar;
    MyClass myObject;
};

你可以这样使用这个类:

int main() {
    OuterClass obj(10, 20);
    obj.printInfo();
    return 0;
}

在上述代码中,OuterClass的构造函数使用初始化成员列表初始化了intVarmyObjectintVar被初始化为nummyObject调用MyClass的构造函数并初始化为myClassValue