c++中的构造函数
    C++是一种面向对象的编程语言,它提供了构造函数的概念。构造函数是一种特殊的函数,用于初始化对象的值。在创建对象时,构造函数会自动执行,并且可以在其中设置默认值或初始化对象的成员。
    在本文中,我们将深入了解C++中的构造函数,包括构造函数的定义和使用、构造函数的重载、默认构造函数和拷贝构造函数等相关内容。
    1. 构造函数的定义和使用
    构造函数的定义与普通函数的定义相似,只是它们的名称必须与类的名称相同,并且没有返回类型。构造函数也可以有参数,它们用于初始化对象的成员。
    ```
    #include <iostream>
    using namespace std;
    class Student {
    public:
        string name;
        int age;
        Student(string n, int a)
        {
            name = n;
            age = a;
        }
        void showInfo()
        {
            cout << "Name: " << name << endl;
            cout << "Age : " << age << endl;
        }
    };
    在这个示例中,我们定义了一个包含两个成员变量(name和age)的学生类,并在其中定义了一个构造函数。构造函数的名称与类的名称相同,它接受两个参数(一个字符串和一个整数),并将它们分别赋值给成员变量。
    在主函数中,我们创建了一个名为s的学生对象,并将其初始化为“Mike”和20。然后调用了showInfo()函数,该函数将对象的名称和年龄打印到终端。
    class Student {
    public:
        string name;
        int age;
        Student()
        {
            name = "";
            age = 0;
            cout << "Default constructor called" << endl;
        }
        Student(string n)
        {
            name = n;
            age = 0;
            cout << "Constructor with name called" << endl;
        }
构造函数可以被重载        Student(int a)
        {
            name = "";
            age = a;
            cout << "Constructor with age called" << endl;
        }
        Student(string n, int a)
        {
            name = n;
            age = a;
            cout << "Constructor with name and age called" << endl;
        }
        void showInfo()
        {
            cout << "Name: " << name << endl;
            cout << "Age : " << age << endl;
        }
    };
    在这个示例中,我们定义了四个不同的构造函数,它们接受不同数量的参数。第一个构造函数是默认构造函数,它不接受任何参数并将成员变量的值设置为默认值。第二个构造函数
接受一个字符串参数作为名称,并将成员变量age设置为默认值。第三个构造函数接受一个整数参数作为年龄,并将成员变量name设置为默认值。最后一个构造函数接受一个字符串参数作为名称和一个整数参数作为年龄。
    3. 默认构造函数和拷贝构造函数
    默认构造函数是一个不接受任何参数的构造函数。如果在类中没有定义构造函数,则C++编译器将自动生成一个默认构造函数。
    拷贝构造函数是一种特殊的构造函数,它用于将一个对象的值复制到另一个对象。它常用于对象初始化、对象赋值和对象传递时。
    在这个示例中,我们定义了一个默认构造函数和一个拷贝构造函数。默认构造函数初始化成员变量的默认值。拷贝构造函数将一个Student对象作为参数并将其值复制到新对象中。
    在主函数中,我们创建了三个不同的学生对象。第一个对象使用默认构造函数进行初始化。第二个对象使用带有名称和年龄的构造函数进行初始化。然后,我们使用拷贝构造函数将s2对象的值复制到s3对象中。我们更改了s3的名称和年龄值,并打印了两个对象的信息。
我们发现s3的值已更改,但s2的值保持不变。
    4. 总结
    构造函数是C++中重要的概念之一,它使得对象的初始化和赋值变得更加简单和方便。熟练运用构造函数可以提高代码的可读性、可维护性和可靠性,是每个C++程序员都应该掌握的技能之一。