💖作者:小树苗渴望变成参天大树
❤️🩹作者宣言:认真写好每一篇博客
💨作者gitee:gitee
💞作者专栏:C语言,数据结构初阶,Linux,C++
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!
前言
今天博主又来更新新的文章了,今天我们接着上面的内容就下两个默认成员函数,讲完这两个,剩下来的两个就简单了,因为用到也不多,今天讲的这个两个也特别的关键,尤其是第一个也不好理解,我尽量使用易懂的语言给大家讲解,而且要用到之前的栈类,日期类,myQueue类,话不多说,我们开始进入正文。
一、案例引入
在我们之前学习的内置类型我定义一个整型变量
int a=10;
此时我想定义一个和a是一样的变量怎么做:
int b=a;
内置类型是这样就可以解决问题了。
对于自定义类型我们如果也这样呢??
Date d1(2023,5,1);
Date d2=d1;
在C++里面是不允许这么赋值的,在传营参的时候也不是直接把对象1直接赋值给对象2,必须要通过调用拷贝构造函数去实现。
拷贝构造函数其实是特殊的构造函数,也是完成初始化操作的,所以有些特性和构造函数一样,无返回值,函数名和类名相同,形参是固定的
拷贝构造函数: 只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。
我们来看具体写法:
大家可以看到完成我们想要的效果。
解决困惑:
1.为什么要加引用
我给大家举一个例子:
class Date
{
public:
void print()
{
cout << _year << " " << _month << " " << _day << endl;
}
Date()//无参构造函数
{
_year = 1;
_month = 1;
_day = 1;
}
Date(const Date& d)//拷贝构造函数
{
_year = d._year;
_month = d._month;
_day = d._day;
}
private: