C++中构造函数

        C++中,定义类型需要构造函数和析构函数,但发现没有写这两个函数,程序仍然可以正常的运行,这是因为编译器自带了默认的构造函数和析构函数。类中的构造函数,可以将其理解为一个设备的初始化,而析构函数则可以理解为恢复出厂设置。

无参构造函数

        顾名思义,这种构造函数没有参数,是相对而言十分”简单“的一种构造函数,其构成也十分简单——

#include
using namespace std;


class people
{
public:
    people()
    {
        ;
    }
    
}

int main()
{
    people p1;
    return 0;
}

        这便是一种最简单的无参构造函数的实现,也很像编译器中自带的构造函数的实现,好像看似没有什么用,但却是在类的定义中必不可少的东西。

有参构造函数

        顾名思义,相对于无参构造函数,有参构造函数最大的特点就是在构造函数之中有参数了,这就可以实现对类中属性的初始化:

#include
using namespace std;


class people
{
public:
    people(int a)
    {
        age=a;
    }
    
    int age;
}

int main()
{
    people p1(18);
    return 0;
}

        我们创建people类型并且给他传值18(感觉好像函数的调用啊,但其实不是),构造函数中有参数来接收这个18,并且将age初始化为18

拷贝(复制)构造函数

        这种构造函数相对于前者而言,更加的复杂,因为它会将一个类型中的所有的属性复制给同种类型的另一个变量,通俗一点的说就是像传参一样,但传的是一个类

#include
using namespace std;


class people
{
public:
    people(int a)
    {
        age=a;
    }
    people(const people& p1)
    {
        age=p1.age;
    }

    int age;
}

int main()
{
    people p1(18);
    people p2(p1)
    return 0;
}

        这个代码的意思是,我们先给p1,用有参构造函数的方式,将其初始化为18,然后再创建p2这个变量,然后用拷贝构造函数的方式(注意,要用const保护原属性,而且用引用的方式),将p2中age的值赋值为p1中age的值。 

总结

        构造函数还是相对而言比较复杂的,想要完全掌握还是得平时自己多练多用。

 

你可能感兴趣的:(c++)