C++构造函数


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

2.构造函数的特性:

1)函数名与类名相同

2)没有返回值,没有类型

3)在创建对象时编译系统会调用构造函数,每创建一个对象就会调用一次构造函数,在对象的生命周期内只调用一次。

4)构造函数有初始化列表(可以不使用),其他成员函数没有。

5)没有显式定义构造函数时,编译系统会提供默认的构造函数,这个函数函数体是空的,也没有参数,不执行初始化操作。

6)构造函数可以重载,实参决定调用那个构造函数。

7)一个类只能有一个默认构造函数,即可以不用参数调用的构造函数,一个类只能有一个,因为无参构造函数和带有缺省值的构造函数都认为是缺省构造函数。

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

3.构造函数初始化数据成员:


 

3.1:上面是在类内定义构造函数,也可以只在类内声明,在类外定义

CDate();

CDate::CDate()

{

_year = 0;

_month = 0;

_day = 0;

}

3.2:构造函数是在定义对象时由系统自动调用,不能被用户调用。

d.CDate();    //一般调用函数的方法是错误的。

带参构造函数

构造函数名(类型1 形参1,类型2 形参2...)

定义对象形式   类名对象名(实参1,实参2,...)

CDate(const int year,const int month,const int day)//带参构造函数定义

{

_year = year;

_month = month;

_day = day;

}

使用参数初始化列表初始化数据成员

一般形式:类名::构造函数名(参数表):数据成员初始列表(以逗号分隔)

{}



 

注意事项:

(1)每个成员在初始化列表中只能出现一次。

(2)初始化列表仅用于初始化成员,并不指定这些数据成员的初始化顺序,数据在类中定义的顺序就是在参数列表的初始化顺序。

:_year(year)

,_day(day)

,_month(month)

实际上仍是按照类中定义的顺序先初始化month,在初始化day.

(3)尽量避免使用成员初始化成员,成员的初始化顺序最好和成员的定义顺序保持一致。

 




系统是按照定义的顺序初始化各个成员,并没有按照初始化列表的顺序所以_month是随机值。

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

      引用数据成员//因为引用必须初始化

      const 数据成员

      类类型成员(该类没有缺省的构造函数)

构造函数的重载

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值