小工具知识网

当前位置: 首页 > 行业知识 > C++拷贝构造函数与赋值运算符重载

行业知识

C++拷贝构造函数与赋值运算符重载

2026-11-09 17:46:26 来源:互联网转载

��得泉:个人主页

个人专栏:《Linux操作系统》 《C++从入门到精通》  《LeedCode刷题》

键盘敲烂,年薪百万!


一、拷贝构造函数

1.概念

       在现实生活中,可能存在一个与你一样的自己,我们称其为双胞胎。

       那在创建对象时,可否创建一个与已存在对象一某一样的新对象呢?

       拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。

2.特性

拷贝构造函数也是特殊的成员函数,其特征如下:

     1.拷贝构造函数是构造函数的一个重载形式。

     2.拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。

class Date{public:     Date(int year = 1900, int month = 1, int day = 1)     {         _year = year;         _month = month;         _day = day;     }     // Date(const Date& d)   // 正确写法     Date(const Date d)   // 错误写法:编译报错,会引发无穷递归     {         _year = d._year;         _month = d._month;         _day = d._day;     }private:     int _year;     int _month;     int _day;};int main(){     Date d1;     Date d2(d1);     return 0;}

     3.若未显式定义,编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。

class Time{public:     Time()     {         _hour = 1;         _minute = 1;         _second = 1;     }     Time(const Time& t)     {         _hour = t._hour;         _minute = t._minute;         _second = t._second;         cout 

上一篇:揭秘书写秘诀,如何正确书写统字?一篇文章带你轻松掌握!

下一篇:docker安装并使用国内源(Linux、Windows、macOS)