c++

状课网-少儿编程网课专业平台

c++ C++编程进阶级—拷贝构造函数

发布时间:2021-11-22 14:03:46 浏览 0
各位小伙伴大家好:

休息一天我们来继续学习,本期为大家分享的内容来源于一个参数。一般函数都有参数没什么好奇怪的,但这个有点不一样,它是一个类对象。

使用类作为参数和其他的参数有什么不一样吗?

当然有点不一样,在使用类对象作为参数的时候会调用这个类的拷贝构造函数。

下面我们来完整的代码:

C++编程进阶级—拷贝构造函数

C++编程进阶级—拷贝构造函数

C++编程进阶级—拷贝构造函数

代码很长,也有点复杂。设计了三个类,一个时间类用于记录出生日期,一个人员类用于初始化ID号码、名字和性别,还有一个职员类用于初始化部门和薪水。 这里的职员类继承自人员类,由于父类构造函数有参数所以在子类构造函数中需要显式调用父类构造函数(第63行)来初始化父类的成员变量。 下面来看一下最后运行结果:

C++编程进阶级—拷贝构造函数

这段程序除了上面的显式调用父类构造函数之外,还有一行代码引起我的注意(第62行)。 在staff构造函数中有一个参数Date它是一个类。也就是函数中使用类作为参数,我们知道函数里的参数在调用的时候,是将实参的内容拷贝一份给形参。那么类也是一样吗?

笔记:

当类作为参数的时候会调用相应类的拷贝构造函数,将对象拷贝一份交给函数。

一般如果类中不含指针类成员变量或函数的时候,不需要显式定义拷贝构造函数。 编译器自动调用类的默认拷贝构造函数。默认拷贝构造函数会将类对象中的数据拷贝一份交给函数去运行,也叫浅拷贝。

但当类中含有指针类数据的时候,默认拷贝构造函数就不够用了。 因为对于指针数据它只会复制指针所指向的内存地址,并没有将地址中的内容复制进来,一旦原来对象释放地址所指向的内存空间之后,就会出现编译错误。

这种情况下就需要显示定义类的拷贝构造函数,来将类中完整的内容全部复制过来,这个过程就叫深拷贝。 本期拷贝构造函数就为大家简单介绍到这里,下期再会。

文章来源:创客编程小屋

本文链接:https://www.ascratch.com/news/17492.html

上一篇:C++编程进阶级—将字符赋值给整型变量 下一篇:返回列表
相关推荐 更多