c++类的四种构造函数和析构函数(注.实例Boy类)

c++类的四种构造函数和析构函数(注.实例:Boy类)

一。提要

1.构造函数的作用初始化对象的数据成员(仅c11新标准支持类内初始化)类内初始化较为单一,不能满足复杂多变的实际要求。

2.创建一个对象时就会调用构造函数,在对象销毁前(大括号是作用域)会自动调用析构函数(释放构造函数分配的动态的动态内存空间)【不能自己手动调用构造函数和析构函数】

3.没有定义构造函数和析构函数就会调用编译器合成的构造函数和合成的析构函数【合成的构造函数(默认构造函数)和析构函数没有作用】

4.构造函数和析构函数有自定义的构造函数和析构函数和编译器自动生成的构造函数和析构函数.

Boy类的数据成员:
在这里插入图片描述
Boy类打印对象信息的接口:
在这里插入图片描述

二·四种自定义构造函数和析构函数长什么样,怎么使用

1.自定义的默认构造函数

1.自定义的默认构造函数的声明:

在这里插入图片描述

2.自定义的默认构造函数的定义:

在这里插入图片描述

3.自定义的默认构造函数在main.cpp中的使用和它的打印信息:

在这里插入图片描述

2.自定义的重载构造函数(带参数的)

1.自定义的重载构造函数的声明:

在这里插入图片描述

2.自定义的重载构造函数的定义:

在这里插入图片描述

3.自定义的重载构造函数在main.cpp中的使用和它的打印信息:

在这里插入图片描述

3自定义的拷贝构造函数

1.自定义的拷贝构造函数的声明:

在这里插入图片描述

2.自定义的拷贝构造函数的定义:

在这里插入图片描述

3.自定义的拷贝构造函数在main.cpp中的使用和它的打印信息:

在这里插入图片描述

4.自定义的赋值构造函数

1.自定义的赋值构造函数的声明:

operator=是一个运算符函数 ,运算符重载以后再说 自定义的赋值构造函数是唯一有函数返回值的

在这里插入图片描述

2.自定义的赋值构造函数的定义:

在这里插入图片描述

3.自定义的赋值构造函数在main.cpp中的使用和它的打印信息:

在这里插入图片描述

5.自定义的析构函数

1.析构函数的声明:

在这里插入图片描述

2.析构函数的定义:

在这里插入图片描述

三.注意事项:

拷贝构造函数和赋值构造函数的区别:

在对象初始化时把另一个对象的数据成员赋值给对象 称为拷贝构造函数,如:

Boy boy1(“man”,20,7000);

Boy boy = boy1;

对象已经创建完毕时把另一个对象的数据成员赋值给对象 称为赋值构造函数 如:

Boy boy,boy1(“jack”,19,6000);

boy = boy1;

拷贝构造函数和赋值构造函数的注意事项:

operator=(const Boy& boy)中boy,使用引用,(避免不必要的麻烦)

而Boy(const Boy& boy)中的boy,必须使用引用;

赋值构造函数的返回值是为了避免链式赋值如:

Boy boy1,boy2,boy3;

boy1=b2=boy3;

如果确定没有链式赋值也可以用void类型;

拷贝构造函数和赋值构造函数不定义也可以完成,数据成员有指针时必须自己定义

否则牵扯到深拷贝和浅拷贝的问题.

如果定义了一个构造函数编译器就不会自动生成合成的默认构造函数

提醒:尽量使用自定义的构造函数和析构函数[如果没有动态内存要释放可以不定义]

初学编程的朋友一定要从用户的角度转换到程序员的角度 我还在挣扎.

今日总结:

好吧,不是今天的总结,是我临时写的, 老师说让写博客,我就随便写了写,凑合着看吧!
第一天写博客 ,做个纪念!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值