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

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

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

在C++中,构造函数是用于初始化对象的特殊成员函数。在创建对象时,构造函数会自动调用并执行相应的操作,例如对成员变量进行赋值或执行特定的操作等。

问题14是关于构造函数的一个问题,下面将对此问题进行介绍。

问题描述

在C++中是否可以声明多个构造函数?

问题解答

是的,C++中可以声明多个构造函数。这些不同的构造函数可以有不同的参数列表和实现方式,以满足不同的初始化需求。

以下是一个示例程序,其中包含了两个构造函数:

#include <iostream>
using namespace std;

class Person {
    public:
        int age;
        double weight;
        string name;

        Person(int a, double w, string n) {
            age = a;
            weight = w;
            name = n;
        }

        Person(string n) {
            name = n;
        }

        void display() {
            cout << "Name: " << name << endl;
            cout << "Age: " << age << endl;
            cout << "Weight: " << weight << "kg" << endl;
        }
};

int main() {
    Person p1(25, 65.5, "Tom");
    Person p2("Tony");

    p1.display();
    p2.display();

    return 0;
}

以上程序定义了一个名为Person的类,包含了三个成员变量:age、weight和name。在类中声明了两个构造函数,分别为带有三个参数的构造函数和带有一个参数的构造函数。

在主函数中,创建了两个Person对象p1和p2,分别使用两个不同的构造函数进行初始化。p1使用了带有三个参数的构造函数进行初始化,而p2则使用了带有一个参数的构造函数进行初始化。

输出结果为:

Name: Tom
Age: 25
Weight: 65.5kg
Name: Tony
Age: -858993460
Weight: 2.12199e-314kg

可以看到,p1的输出结果正确显示了其所有成员变量的值,而p2的输出结果显示的是未进行初始化的值。这是因为p2的构造函数只对name成员进行了初始化,而age和weight成员未进行初始化。

在实际编程中,应该根据实际需求来选择合适的构造函数,以保证对象正确地进行初始化。

总结

在C++中,构造函数是用于初始化对象的特殊成员函数。它可以被声明为多个,以满足不同的初始化需求。在实际编程中,应该根据实际需求来选择合适的构造函数,以保证对象正确地进行初始化。