构造函数
1.概念
构造函数:一个特殊的成员函数,名字与类名相同,创建类类型对象的时候,由编译器自动调用,在对象的生命周期内只且调用一次,以保证每个数据成员都有一个合适的初始值。
2.构造函数的特性
函数名和类名相同;
没有返回值;
有初始化列表(可以不用);
新对象被创建,由编译器自动调用,且在对象的生命周期内仅调用一次;
构造函数可以重载,实参决定了调用哪个构造函数;
如果没有显示的调用时,编译器会提供一个默认的构造函数;
无参构造函数和带有缺省值的构造函数都认为是缺省构造函数,并且缺省构造函数只能有一个;
构造函数不能用const修饰(因为const修饰类的成员函数时,该函数不能修改成员变量,但是构造函数要修改类的成员变量,因此不可以由const修饰)
3.初始化列表
以冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。
4.初始化顺序
数据成员在类中定义的顺序就是参数列表中的初始化顺序;
初始化列表仅用于初始化数据成员,并不指定这些数据成员的初始化顺序;
每个成员在初始化列表中只能出现一次;
尽量避免使用成员初始化成员,成员初始化顺序最好和成员的定义顺序保持一致。
类中包含以下成员必须要放在初始化列表中初始化:
(1)引用数据类型
(2)const数据类型
(3)类类型成员(该类没有缺省的构造函数)
5.默认构造函数
默认构造函数使用与成员变量初始化相同的规则初始化成员,对于内置类型和复合类型的成员,如组、指针,只对定义在全局定义作用于的对象初始化,对于局部作用域的内置和复合类型不作初始化。
6.构造函数的作用
构建对象
初始化对象
类型转换
7.explcit
用explicit修饰构造函数,抑制由构造函数定义的隐式转换,explicit关键字类内部的构建声明上,在类的定义体外部的定义上不再重复。
-
C++
+关注
关注
22文章
2108浏览量
73623 -
构造函数
+关注
关注
0文章
5浏览量
2734
发布评论请先 登录
相关推荐
评论