📅  最后修改于: 2023-12-03 15:13:58.153000             🧑  作者: Mango
在C++中,构造函数是一种特殊的成员函数,用于在创建对象时初始化对象的成员变量。构造函数的名称与类名相同,没有返回类型,可以重载。在本文中我们将介绍问题6,这是关于在类中添加多个构造函数的问题。
假设我们现在有一个类Person
,它有一个int型成员变量age
和一个string型成员变量name
,并且我们希望在创建对象时初始化这两个成员变量。我们现在需要添加多个构造函数,使得用户可以选择用不同的参数组合来创建对象。
具体而言,我们需要实现以下构造函数:
Person()
:默认构造函数,将age
和name
初始化为0和空字符串Person(int age)
:构造函数,将age
初始化为给定的值,name
初始化为空字符串Person(string name)
:构造函数,将name
初始化为给定的字符串,age
初始化为0Person(int age, string name)
:构造函数,将age
和name
分别初始化为给定的值请你设计Person
类,并实现上述构造函数。
我们可以通过重载构造函数来实现在类中添加多个构造函数。在实现之前,我们需要先了解一些有关构造函数的知识。
默认构造函数是指没有参数的构造函数,它的作用是创建一个对象并将其中的成员变量初始化为默认值。在C++中,如果我们没有显式地为一个类提供构造函数,则编译器会自动生成一个默认构造函数。
在本问题中,我们需要为Person
类提供一个默认构造函数,它的作用是将age
和name
初始化为0和空字符串。我们可以按照如下方式实现:
class Person {
public:
Person() {
age = 0;
name = "";
}
private:
int age;
string name;
};
参数化构造函数是指带有参数的构造函数,它的作用是创建一个对象并将其中的成员变量初始化为给定的值。在本问题中,我们需要为Person
类提供多个参数化构造函数。
我们需要为Person
类提供一个具有一个参数的构造函数,它的作用是将age
初始化为给定的值,name
初始化为空字符串。我们可以按照如下方式实现:
class Person {
public:
Person(int age) {
this->age = age;
this->name = "";
}
private:
int age;
string name;
};
我们需要为Person
类提供一个具有一个参数的构造函数,它的作用是将name
初始化为给定的字符串,age
初始化为0。我们可以按照如下方式实现:
class Person {
public:
Person(string name) {
this->age = 0;
this->name = name;
}
private:
int age;
string name;
};
我们需要为Person
类提供一个具有两个参数的构造函数,它的作用是将age
和name
分别初始化为给定的值。我们可以按照如下方式实现:
class Person {
public:
Person(int age, string name) {
this->age = age;
this->name = name;
}
private:
int age;
string name;
};
以上就是本问题的解决方案。我们可以通过重载构造函数来实现在类中添加多个构造函数。在实现过程中,我们需要注意以下几点:
以下是本问题的完整代码:
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
// 默认构造函数
Person() {
age = 0;
name = "";
}
// 具有一个参数的构造函数:将age初始化为给定的值,name初始化为空字符串
Person(int age) {
this->age = age;
this->name = "";
}
// 具有一个参数的构造函数:将name初始化为给定的字符串,age初始化为0
Person(string name) {
this->age = 0;
this->name = name;
}
// 具有两个参数的构造函数:将age和name分别初始化为给定的值
Person(int age, string name) {
this->age = age;
this->name = name;
}
private:
int age;
string name;
};
int main() {
// 创建Person对象
Person p1; // 调用默认构造函数
Person p2(18); // 调用具有一个参数的构造函数
Person p3("Tom"); // 调用具有一个参数的构造函数
Person p4(20, "Lucy"); // 调用具有两个参数的构造函数
return 0;
}
我们将会得到如下输出:
Test Case 1 Passed