关于我们自己实现的SharedPtr对象赋值问题
我的问题:
如图运行结果(白色部分),在调用 “=”重载函数后,原来 ptr3 所指向的对象 调用了void release(),此时 *countRef 变为 0 所以,接着调用~Test()被销毁,那之后为什么又调用了拷贝构造函数?
我的理解:
因为调用“=”重载函数后返回的是一个临时对象返回给ptr3,接着就会调用拷贝构造函数将这个临时对象拷贝给 ptr3,完成后临时对象被销毁。(思路待验证,谢谢老师!!!!!!!!!!!)
SharedPtr<Test> ptr1(new Test("hello world"));
cout << "----------- ptr3 ------------" << endl;
SharedPtr<Test> ptr3(new Test("ptr3")); // 创建一个新的SharedPtr指针
cout << ptr3.getCountRef() << endl;
ptr3->show();
cout << "------- ptr3 = ptr1 ---------" << endl;
ptr3 = ptr1; // 将 ptr1 赋值给 ptr3
cout << ptr3.getCountRef() << endl;
ptr3->show();
cout << "----------- END -------------" << endl;
4
收起
正在回答 回答被采纳积分+1
物联网/嵌入式工程师
- 参与学习 394 人
- 提交作业 23320 份
- 解答问题 1185 个
行业热门,政策风口,人才缺口极大,现在入场时机正好! 上千人检验,数轮迭代的硬核知识体系,软硬件通吃 保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星