MST

星途 面试题库

面试题:C++中编译器自动生成的默认构造函数的特点及应用场景

请简述C++编译器自动生成的默认构造函数的特点,在什么情况下编译器会自动生成默认构造函数?并举出至少一个实际应用场景,说明在该场景下默认构造函数是如何起作用的。
19.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

默认构造函数特点

  1. 函数体为空:默认构造函数不执行任何初始化操作,函数体是空的。
  2. 参数列表为空:没有任何参数。

编译器自动生成情况

当类中没有用户定义的构造函数时,编译器会自动生成默认构造函数。

实际应用场景及作用

场景:在使用标准模板库(STL)容器存储自定义类对象时。例如,使用 std::vector 存储自定义类 MyClass 的对象。 作用:当 std::vector 初始化元素或者进行扩容等操作需要创建 MyClass 对象时,若 MyClass 没有用户定义的构造函数,就会调用编译器自动生成的默认构造函数来创建对象,使得 MyClass 对象能够顺利存储在 std::vector 中。 如下代码示例:

#include <vector>
class MyClass {
    // 没有用户定义构造函数,编译器自动生成默认构造函数
};
int main() {
    std::vector<MyClass> vec;
    vec.resize(5); // 这里会调用MyClass的默认构造函数创建5个MyClass对象
    return 0;
}