当前位置: 首页 > 网络知识

C++快速入门 第三十六讲:副本构造器

时间:2026-01-29 09:25:39

我们可以把一个对象赋值给一个类型与之相同的变量,编译器将生成必要的代码把“源”对象各属性的值分别赋值给“目标”对象的对应成员。这种赋值行为称之为逐位复制。(但如果某些成员变量是指针的话,对象成员逐位复制的结果是你将拥有两个一模一样的实例,而这两个副本里的同名指针会指向相同的地址)

实例1:带指针变量的等号重载

1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 class MyClass 6 ; 16 17 MyClass::MyClass(int *p)//构造器实现 18 21 22 MyClass::~MyClass()//析构器实现 23 26 27 // a = b; 如obj1 = obj2; 28 MyClass &MyClass::operator=(const MyClass &rhs)//运算符(=)重载实现,rhs为另一对象 29 38 else 39 42 return *this;//返回第一个MyClass对象 43 } 44 45 void MyClass::print()//打印*ptr的值 46 49 50 int main() 51

实例2:副本构造器

1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 class MyClass 6 ; 17 18 MyClass::MyClass(int *p)//主构造器实现 19 24 MyClass::MyClass(const MyClass &rhs)//副本构造器实现 25 30 31 MyClass::~MyClass()//析构器实现 32 37 38 // a = b; 如obj1 = obj2; 39 MyClass &MyClass::operator=(const MyClass &rhs)//运算符(=)重载实现,rhs为另一对象 40 50 else//obj1与obj2为同一个对象时 51 54 cout << "离开赋值语句重载\n"; 55 return *this;//返回第一个MyClass对象 56 } 57 58 void MyClass::print()//打印*ptr的值 59 62 int main() 64


上一篇:C++快速入门 第四十五讲:类模板
下一篇:C++快速入门 第二十八讲:多继承(multiple inheritance)
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素