MST

星途 面试题库

面试题:C++类成员变量初始化之基础方法考察

在C++中,定义一个包含int、double和自定义类类型成员变量的类。请使用构造函数初始化列表的方式对这些成员变量进行初始化,并解释为什么使用初始化列表有时是必要的,特别是对于自定义类类型的成员变量。
21.3万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

class CustomClass {
public:
    CustomClass() {
        std::cout << "CustomClass default constructor" << std::endl;
    }
};

class MyClass {
private:
    int intValue;
    double doubleValue;
    CustomClass customObj;

public:
    MyClass(int i, double d) : intValue(i), doubleValue(d), customObj() {
        // 这里的构造函数体可以为空,初始化工作在初始化列表完成
    }
};

使用初始化列表有时是必要的,特别是对于自定义类类型的成员变量,原因如下:

  • 效率更高:对于自定义类类型的成员变量,在构造函数体中赋值会先调用默认构造函数创建对象,然后再调用赋值运算符进行赋值。而使用初始化列表则直接调用合适的构造函数进行初始化,减少了一次默认构造和一次赋值操作,提高了效率。
  • 某些情况必须使用:当自定义类没有默认构造函数,只有带参数的构造函数时,在构造函数体中无法对其进行赋值操作,必须在初始化列表中调用带参数的构造函数来初始化该成员变量。