构造函数

内存分区


image.png

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

对象初始化


image.png

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

无参构造函数


image.png

有参构造函数


image.png

重载构造函数
image.png

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


image.png

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

构造函数初始化列表


image.png

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


image.png

必须用初始化列表初始化
image.png

拷贝构造函数


image.png

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

总结


image.png

image.png

image.png

析构函数


image.png

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

总结


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容