MST

星途 面试题库

面试题:C++中初始化成员列表在类继承场景下的应用

假设有一个基类Base,包含一个int类型的成员变量baseVar。有一个派生类Derived继承自Base,且Derived还有一个double类型的成员变量derivedVar。请用C++代码实现,在Derived类的构造函数中,使用初始化成员列表分别初始化baseVar和derivedVar,并解释为何要这样做。
37.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

class Base {
public:
    int baseVar;
};

class Derived : public Base {
public:
    double derivedVar;
    Derived(int baseValue, double derivedValue) : baseVar(baseValue), derivedVar(derivedValue) {}
};

使用初始化成员列表来初始化成员变量有以下原因:

  • 效率更高:对于类类型成员变量,初始化列表直接调用构造函数进行初始化,而在构造函数体内赋值则会先调用默认构造函数初始化,然后再进行赋值操作,多了不必要的开销。
  • 必须使用初始化列表的情况:对于const成员变量和引用成员变量,只能在初始化列表中进行初始化,因为它们一旦被创建就不能被赋值。
  • 语义清晰:初始化列表清楚地表明了成员变量是如何被初始化的,增强了代码的可读性和可维护性。