构造函数和析构函数

一卷旌收千骑虏,万全身出百重围。这篇文章主要讲述构造函数和析构函数相关的知识,希望能为你提供帮助。
先来创建一个类名:

class Person
{
Person(){//构造函数
}
~Person(){//析构函数
}
}

构造函数用于创建对象时进行初始化,析构函数用于对象销毁前进行清理工作。
这两个函数都是必须要有的,如果没写,编译器会自动帮我们写上,但都是空实现。
关于构造函数
按参数分为有参构造和无参构造
Person(int a){}//有参构造
Person(){}//无参构造

编译器默认给我们提供的是无参构造
按类型分为普通构造和拷贝构造
Person(){} //普通构造
Person(const Person & p){}//拷贝构造


编译器提供的析构函数是空实现,所以什么都没有输出。
构造函数:编译器调用三个函数:无参构造函数(空实现),析构函数(空实现),拷贝构造函数(对属性值进行赋值)。
关于书写构造函数:
如果书写了无参构造函数,编译器会提供拷贝构造函数。

如果书写了有参构造函数,编译器不会提供无参构造函数,但会提供拷贝构造函数。
如果书写了拷贝函数,编译器不会提供无参、有参构造函数。
调用的方法:括号法、显示法、隐式转换法。
括号法:
Person p1;
Person p2(10);
Person p3(p1);

显示法:
Person p1;
Person p2=Person(10);

隐式转换法:
Person p1;
Person p2=10;
Person p3=p1;

拷贝函数调用:
1.使用一个已经创建完毕的对象进行初始化。
Person p1;

2.值传递的方式给函数参数传值。
void test(Person p)
{
}
void test01()
{
Person p1;
test(p);
}

3.以值方式返回局部对象。
Person test()
{
Person p1;
return p1;
}



【构造函数和析构函数】如有不对,欢迎指正。

    推荐阅读