构造函数、拷贝构造函数和析构函数

本文详细介绍了构造函数和析构函数的概念及其在对象生命周期中的作用。构造函数用于对象的构建与初始化,包括初始化列表的使用及特殊成员的初始化需求。而析构函数则在对象销毁时进行必要的资源清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                                                                                  构造函数

 构造函数:是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,在对象的生命周期内只且只调用一次,以保证每个数据成员都有一个合适的初始值。

构造函数的特性:

     1、函数名与类名相同;

     2、不具有任何类型,没有返回值;

     3、有初始化列表(可以不用):每个数据成员在初始化列表中只能出现一次;初始化列表仅用于初始化数据成员,并不指定数据成员的初始化顺序;数据成员在类中的定义       顺序就是参数列表的初始化顺序。

     4、新对象被创建,由编译器自动调用,且在对象的生命周期内仅调用一次;

     5、构造函数可以重载,实参决定了调用哪个构造函数;

     6、如果没有显示定义构造函数时,编译器会提供一个默认的构造函数;只是这个构造函数的函数体是空的,也没有参数,不执行初始化操作;

     7、无参构造函数和带有缺省值的构造函数都认为是缺省构造函数,并且缺省构造函数只能有一个;

     8、构造函数不能用const来修饰。

类中包含以下成员必须要放在初始化列表中:

1、引用数据成员

2、const数据成员

3、类类型成员

程序示例:



构造函数的作用:

1、构建对象:类名  对象名(实参一,实参二···)  Date d1(2015,1,1)

2、初始化对象

3、类型转换:explicit关键字,用explicit修饰构造函数,抑制由构造函数定义的隐式转换。

                                                                                                                                         拷贝构造函数

拷贝构造函数:是构造函数的重载,只有单个形参且该形参是同类型已存在对象的引用,常用const修饰,由编译器自动调用。

使用场景:

                    1、对象实例化对象

                    

                    2、传值方式作为函数的参数

    

                    3、传值方式作为函数返回值

                      

                                                                                                                      析构函数

析构函数:与构造函数功能相反,在对象被销毁时,由编译器自动调用,完成类的资源清理。

析构函数特性:1、析构函数在类名前加上字符~

                               2、析构函数无参无返回值

                               3、一个类有且只有一个析构函数,若未显示定义,系统会自动生成缺省的析构函数

                               4、对象生命周期结束时,C++编译系统自动调用析构函数

                               5、析构函数体内并不是删除对象,而是做一些清理工作。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值