构造函数和析构函数
Posted 别跑昂,你
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数和析构函数相关的知识,希望对你有一定的参考价值。
先来创建一个类名:
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;
}
如有不对,欢迎指正。
以上是关于构造函数和析构函数的主要内容,如果未能解决你的问题,请参考以下文章