C++学习总结-构造函数和析构函数

本文详细介绍了C++中的构造函数和析构函数,包括它们的作用、定义、分类、调用方式及用法。重点讲解了构造函数的有参、无参、拷贝构造,以及析构函数的调用时机。此外,还讨论了系统如何自动调用以及在不同情况下如何定义和使用构造函数和析构函数。特别提到了拷贝构造函数的调用场景,并总结了构造函数和析构函数的默认行为规则。
摘要由CSDN通过智能技术生成

一、作用:初始化和清除对象;

二、定义:

返回值void名称带参数重载
构造函数类名()可以可以
析构函数~类名()禁止禁止

三、分类:

        1、按参数:有参构造函数,无参构造函数

        2、按类型:普通构造函数,拷贝构造函数

        3、按定义:默认构造函数,自定义构造函数

四、调用方式:

        1、括号法:

        2、显示法;

        3、隐私转换法;

    //2.1  括号法,常用
	Person p1(10); //有参构造函数
    Person p3(p1); //拷贝构造函数
	//注意1:调用无参构造函数不能加括号,如果加了编译器认为这是一个函数声明
	//Person p2();

	//2.2 显式法(等号右边都是匿名对象,左边是对象名)
	Person p2 = Person(10); //有参构造
	Person p3 = Person(p2); //拷贝构造
	//Person(10)单独写就是匿名对象  当前行结束之后,马上析构。创建了一个对象,但没有名

	//2.3 隐式转换法
	Person p4 = 10; // Person p4 = Person(10); 
	Person p5 = p4; // Person p5 = Person(p4); 

	//注意2:不能利用 拷贝构造函数 初始化匿名对象 编译器认为是对象声明 Person (p4) == Person p4(与上边已有的p4重定义)
	//Person (p4);

 五、用法

1、系统自动调用构造函数和析构函数;

2、如果没有定义构造和析构函数,系统将调用默认构造和析构函数,空实现;

3、构造函数和析构函数必须定义在public里面;

六、拷贝构造函数调用时机:

1、用以创建的对象初始化新的对象;

2、以对象真值在函数中传递参数时;

3、以对象真值的方式返回局部对象;

七、规则

1、未定义情况下,系统会提供三个函数:默认构造函数、默认析构函数、默认拷贝构造函数;

2、如果定义了普通构造函数,那么系统不会再提供默认构造函数,但是会提供拷贝构造函数;

3、如果定义了拷贝构造函数,那么系统不会再提供默认构造函数和普通构造函数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值