MST

星途 面试题库

面试题:C++类缺省函数的重载与隐藏

考虑一个继承体系,基类`Base`有一个缺省构造函数。派生类`Derived`也定义了自己的构造函数。当我们创建一个`Derived`类的对象时,描述基类缺省构造函数的调用情况。如果`Derived`类定义了一个与基类缺省构造函数同名(参数列表不同)的构造函数,这会发生什么?这种情况下如何明确调用基类的缺省构造函数?
43.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 创建Derived类对象时基类缺省构造函数的调用情况
    • 当创建Derived类的对象时,在执行Derived类构造函数的函数体之前,会先自动调用基类的缺省构造函数。这是C++中对象构造的顺序,先构造基类部分,再构造派生类部分。
  2. Derived类定义了与基类缺省构造函数同名(参数列表不同)的构造函数的情况
    • 这并不会产生冲突,因为函数重载允许在同一作用域内存在多个同名但参数列表不同的函数。Derived类的这个构造函数与基类的缺省构造函数处于不同的作用域(基类和派生类各自的作用域),所以可以同时存在。
  3. 明确调用基类的缺省构造函数
    • Derived类构造函数的初始化列表中,可以明确调用基类的缺省构造函数。例如:
class Base {
public:
    Base() {
        // 基类缺省构造函数的实现
    }
};

class Derived : public Base {
public:
    Derived() : Base() {
        // Derived类构造函数的实现
    }
};

在上述代码中,Derived类构造函数的初始化列表Base()明确调用了基类的缺省构造函数。