构造与析构函数

1、构造函数

     作用:创建类对象,并初始化其成员。(可定义多个进行重载)
 
     注:构造函数可以有参数,无返回类型,不能是虚函数,在类体外定义时其函数名前加上“类名 : :”,可重载
            若一个类对象是另一个类对象的数据成员,那么在构造函数创建对象时,作为数据成员的类对象要先调用自身的构造函数;(局部到整体)

2、析构函数

     作用:撤销类对象,回收资源

     注:析构函数无参数,无返回类型,不能重载
            析构函数以调用构造函数相反的顺序被调用(整体到局部)

3、有参构造函数

     无参构造创建的类对象具有相同的初始化值,若需类对象按不同特征初始化不同的值,应采用有参构造函数;

     初始化方式:
     一般初始化          :函数体内初始化;
     初始化列表初始化:函数体外初始化;

     几种须在构造函数初始化列表中初始化的情况:
     a.const成员
     b.引用成员
     c.有参构造对象成员(对象对应的类没有默认构造函数)

     转换构造函数:
     定义:构造函数只有一个参数,且该参数不是本类的const引用时,称为转换构造
     作用:将一个其他类型的数据转换成一个类的对象
     禁止转换构造:在单个参数的构造函数前加上关键字“explicit“,阻止转换构造,阻止定义对象时使用等号初始化对象;

4、缺省构造函数

     C++规定,每个类必须有一个构造函数,没有构造函数就不能创建对象。若未定义构造函数,则C++提供一个缺省构造函数,该缺省构造函数是一个无参构造函数,仅创建对象,不进行初始化。若类中定义了构造函数,则C++不再提供缺省构造函数。如果还需要无参构造函数,必须自定义。

     一个类若什么都没有被称为空类,一个空类的大小为1字节,并且编译器会为其隐式生成6个成员。

5、拷贝构造

     格式:<类名 > : : <拷贝构造函数名>(<类名>&<引用名>)
     作用:用一个对象值创建并初始化另一个对象;
     特点:
              a.拷贝构造函数名与类同名,无返回类型;
              b.拷贝构造函数只有一个形参,该参数是对该类对象的引用。
     注:若一个类中未定义拷贝构造函数,则系统自动生成一个缺省拷贝构造函数,将已知对象的所有数据成员的值拷贝给对应对象的数据成员
     其他作用:
                    a.将对象作为实参进行函数调用时,系统自动调用拷贝构造函数将对象值传递给形参对象;
                    b.当函数返回值为对象时,系统自动调用拷贝构造函数用返回对象值创建一个临时对象,然后再将临时对象值赋给接收函数返回值的对象;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值