构造函数
-
没有回值也不写void
-
函数值和类名相同
-
构造函数可以有参数,因此可以发生重载
-
程序在调用对象的时候自动调用构造,无须手动调用,只能调用一次
析构函数语法
-
析构函数,没有返回值也不写void
-
函数名和类名也相同,在名称前加上符号~
-
析构函数不可以有参数,因此不可以发生重载
-
程序在对象销毁前会自动调用析构,无须手动调用,而且只能化调用一次
构造函数的分类及其调用
-
按参数分为:有参构造和无参构造
-
按类型分为:普通构造和拷贝构造
-
class person
{
public:
//拷贝构造函数
person(const person &p)//拷贝的函数不能更改值,也就是在里面在传入一个值
{
m_age=p.age;
}
int m_age;
};
- 三种调用的方式
- 括号法
- ~~~
int main()
{
person p1;//默认构造函数的调用,注意不要加()因为系统会认为是声明
person p2(10);//有参构造函数
person p3(p2);//拷贝构造函数
}
-
显示法
-
person p1;
-
person P2=person (10);//有参构造
-
person p3=person(p2);//拷贝构造
-
person(10);//这是匿名对象,特点当前执行结束后,系统会立即回收匿名对象。
-
person(p3);//注意不要利用拷贝构造函数初始化匿名对象,编译器会认为 person(p3)==person p3;系统认为是声明 ~~~
-
隐式转换法
-
person p4=10;//相当于写了person p4=person(10);也就是显示法
person p5=p4;//拷贝构造。
拷贝构造的调用顺序
- 来初始化一个新的对象时。
- 值传递的会复制一份内存。故在调用默认构造时也调用了拷贝构造。
- 值传递返回局部变量时也会调用一次默认函数和拷贝构造。
构造函数的调用
- 用户定义有参构造函数,c++不提供默认无参构造。但调用拷贝构造
- 如果用户定义拷贝构造函数,c++不会提供其他的构造函数
- 如果没有调用函数,系统会自动提供。例如:拷贝构造,系统会进行赋值操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)