构造函数

内存分区


构造函数_第1张图片
image.png

栈就是驿站,相当于住宾馆,被子,卫生啥的有服务员打理
堆相当于自己的家,需要自己打理

对象初始化


构造函数_第2张图片
image.png

构造函数可以有多个重载形式
实例化对象时仅用到一个构造函数
当用户没有定义构造函数时,编译器自动生成一个构造函数

无参构造函数


构造函数_第3张图片
image.png

有参构造函数


构造函数_第4张图片
image.png

重载构造函数
构造函数_第5张图片
image.png

默认构造函数
在实例化过程中不需要传递参数的构造函数称为默认构造函数


构造函数_第6张图片
image.png

如果在类中没有定义构造函数,则c++会自动生成一个构造函数,该构造函数称为默认构造函数(没有参数)!
如果定义了构造函数,则创建对象时依据定义的构造函数;
如果定义的构造函数形参列表都包含默认值,则创建对象时可以使用默认构造函数.(有点晕啊。。其实不是很明白为什么要构造函数)

构造函数初始化列表


构造函数_第7张图片
image.png

初始化列表先于构造函数执行
初始化列表只能用于构造函数
初始化列表可以同时初始化多个数据成员
用构造函数初始化:相当于二次赋值


构造函数_第8张图片
image.png

必须用初始化列表初始化
构造函数_第9张图片
image.png

拷贝构造函数


构造函数_第10张图片
image.png

1.如果没有自定义的拷贝构造函数则系统自动生成一个默认的拷贝构造函数
2.当采用直接初始化或复制初始化实例化对象时系统自动调用拷贝构造函数

总结


构造函数_第11张图片
image.png

构造函数_第12张图片
image.png

构造函数_第13张图片
image.png

析构函数


构造函数_第14张图片
image.png

其主要作用就是释放内存
如果没有自定义的析构函数则系统自动生成
析构函数在对象销毁时自动调用
析构函数没有返回值、没有参数也不能重载

总结


构造函数_第15张图片
image.png

你可能感兴趣的:(构造函数)