📅  最后修改于: 2023-12-03 14:39:54.093000             🧑  作者: Mango
在C++中,构造函数是一种特殊的函数,用于初始化对象的状态。与其它函数不同的是,构造函数不能手动调用,而是在创建对象时自动调用。因此,构造函数必须具有与类名相同的名称,并且没有返回类型(包括void)。
问题17:如何为C++类创建多个构造函数?
回答:在C++中,可以为类创建多个构造函数,以便在创建对象时选择不同的初始化方式。有以下两种方法可用于创建多个构造函数。
构造函数重载是指为同一个类定义多个构造函数,它们的参数列表不同。以以下代码为例,定义了一个带有两个构造函数的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
默认形参构造函数是指在构造函数里定义了一个带默认值的参数,通过不同的参数组合实现不同的构造函数。以以下代码为例,定义了一个带有一个默认形参的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++类创建多个构造函数,根据具体的需求选择合适的方法即可。