📜  C++ |构造函数|问题17(1)

📅  最后修改于: 2023-12-03 14:39:54.093000             🧑  作者: Mango

C++ | 构造函数 | 问题17

在C++中,构造函数是一种特殊的函数,用于初始化对象的状态。与其它函数不同的是,构造函数不能手动调用,而是在创建对象时自动调用。因此,构造函数必须具有与类名相同的名称,并且没有返回类型(包括void)。

问题17:如何为C++类创建多个构造函数?

回答:在C++中,可以为类创建多个构造函数,以便在创建对象时选择不同的初始化方式。有以下两种方法可用于创建多个构造函数。

方法1:构造函数重载

构造函数重载是指为同一个类定义多个构造函数,它们的参数列表不同。以以下代码为例,定义了一个带有两个构造函数的Student类:

#include <iostream>
using namespace std;

class Student {
public:
    Student() {
        id = -1;
        name = "unknown";
        cout << "Default constructor is called" << endl;
    }
    Student(int i, string n) {
        id = i;
        name = n;
        cout << "Constructor with parameters is called" << endl;
    }

private:
    int id;
    string name;
};

int main() {
    Student s1;         //调用Default constructor
    Student s2(123, "Alice");    //调用Constructor with parameters
    return 0;
}

输出:

Default constructor is called
Constructor with parameters is called
方法2:默认形参构造函数

默认形参构造函数是指在构造函数里定义了一个带默认值的参数,通过不同的参数组合实现不同的构造函数。以以下代码为例,定义了一个带有一个默认形参的Student类:

#include <iostream>
using namespace std;

class Student {
public:
    Student(int i = -1, string n = "unknown") {
        id = i;
        name = n;
        cout << "Constructor is called" << endl;
    }

private:
    int id;
    string name;
};

int main() {
    Student s1;         //调用默认形参构造函数
    Student s2(123, "Alice");    //调用带参数的构造函数
    return 0;
}

输出:

Constructor is called
Constructor is called

以上两种方法都可为C++类创建多个构造函数,根据具体的需求选择合适的方法即可。