C++基础精讲篇第6讲:类中构造函数和析构函数特性详解_King_lm_Guard的博客-优快云博客
https://blog.youkuaiyun.com/King_lm_Guard/article/details/126043552 本讲内容基于上一讲中分析的C++类中6个默认的成员函数,在上一讲中详细分析了构造函数和析构函数,这一讲博主接着分析拷贝构造函数相关特性。
目录
1、拷贝构造函数基本概念
通俗讲解:就是利用已经创建好的对象d1来创建新的对象d2。对象d2与对象d1特性一样。
严谨讲解:拷贝构造函数只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。
2、特性分析
拷贝构造函数也是特殊的成员函数,其特征如下:
1. 拷贝构造函数是构造函数的一个重载形式。
2. 拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。所以可利用引用终止这种递归状态。下面通过代码具体给大家展开分析:#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Date { public: //构造函数 Date(int year = 2022, int month = 7, int day = 29) { cout << "构造函数:>" << endl; _year = year; _month = month; _day = day; } //拷贝构造函数,正确演示 //Date(const Date& d) //{ // cout << "拷贝构造函数:>" << endl; // this->_year = d._year; // this->_month = d._month; // this->_day = d._day; //} //拷贝构造函数,递归演示 Date(const Date d) { cout << "拷贝构造函数:>" << endl; this->_year = d._year; this->_month = d._month; this->_day = d._day; } private: int _year; int _month; int _day; }; int main() { Date d1; Date d2(d1); return 0; }错误演示:无穷递归
调用拷贝构造函数需要先传参,而在这里演示的传值传参就是一个拷贝构造,所以会发生无穷递归。<

https://blog.youkuaiyun.com/King_lm_Guard/article/details/126043552

最低0.47元/天 解锁文章
2684

被折叠的 条评论
为什么被折叠?



