MST

星途 面试题库

面试题:C++ 中类构造函数重载与调用顺序基础

假设有一个类 `Base`,包含默认构造函数、带一个参数的构造函数和带两个参数的构造函数。请写出这个类的定义,并在 `main` 函数中分别调用这三个构造函数创建对象,同时描述构造函数的调用顺序。
46.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

class Base {
public:
    // 默认构造函数
    Base() {
        std::cout << "默认构造函数被调用" << std::endl;
    }

    // 带一个参数的构造函数
    Base(int a) {
        std::cout << "带一个参数的构造函数被调用,参数a: " << a << std::endl;
    }

    // 带两个参数的构造函数
    Base(int a, int b) {
        std::cout << "带两个参数的构造函数被调用,参数a: " << a << ", 参数b: " << b << std::endl;
    }
};

int main() {
    // 调用默认构造函数创建对象
    Base obj1; 

    // 调用带一个参数的构造函数创建对象
    Base obj2(10); 

    // 调用带两个参数的构造函数创建对象
    Base obj3(10, 20); 

    return 0;
}

构造函数的调用顺序:

  1. 当执行 Base obj1; 时,调用默认构造函数。
  2. 当执行 Base obj2(10); 时,调用带一个参数的构造函数。
  3. 当执行 Base obj3(10, 20); 时,调用带两个参数的构造函数。 每次创建对象时,对应的构造函数会立即被调用,根据对象创建的表达式匹配并调用相应的构造函数。