C++:详谈构造函数

电子说

1.2w人已加入

描述

构造函数

1.概念

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

2.构造函数的特性

函数名和类名相同;

没有返回值;

有初始化列表(可以不用);

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

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

如果没有显示的调用时,编译器会提供一个默认的构造函数;

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

构造函数不能用const修饰(因为const修饰类的成员函数时,该函数不能修改成员变量,但是构造函数要修改类的成员变量,因此不可以由const修饰)

3.初始化列表

C++

以冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。

4.初始化顺序

数据成员在类中定义的顺序就是参数列表中的初始化顺序;

初始化列表仅用于初始化数据成员,并不指定这些数据成员的初始化顺序;

每个成员在初始化列表中只能出现一次;

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

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

(1)引用数据类型

(2)const数据类型

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

5.默认构造函数

默认构造函数使用与成员变量初始化相同的规则初始化成员,对于内置类型和复合类型的成员,如组、指针,只对定义在全局定义作用于的对象初始化,对于局部作用域的内置和复合类型不作初始化。

6.构造函数的作用

构建对象

初始化对象

类型转换

7.explcit

用explicit修饰构造函数,抑制由构造函数定义的隐式转换,explicit关键字类内部的构建声明上,在类的定义体外部的定义上不再重复。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分