c – 这个构造函数是否可以接受?
发布时间:2020-12-16 10:16:47 所属栏目:百科 来源:网络整理
导读:假设我有一个正确实现了复制构造函数和重载=运算符的c类.通过正确实施,我的意思是他们正在工作并执行深层复制: Class1::Class1(const Class1 class1){ // Perform copy}Class1 Class1::operator=(const Class1 *class1){ // perform copy return *this;} 现
假设我有一个正确实现了复制构造函数和重载=运算符的c类.通过正确实施,我的意思是他们正在工作并执行深层复制:
Class1::Class1(const Class1 &class1) { // Perform copy } Class1& Class1::operator=(const Class1 *class1) { // perform copy return *this; } 现在让我说我也有这个构造函数: Class1::Class1(Class1 *class1) { *this = *class1; } 我的问题是上述构造函数是否可以接受?这是我继承和维护的代码. 解决方法
我会说,“不”,原因如下:
>传统的复制构造函数接受其参数作为const引用,而不是指针. 在operator =中“重用”复制构造函数的传统方法是copy-and-swap idiom.我建议以这种方式实现类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Heroku bundle使用Gem :: RemoteFetcher :: FetchError失败
- cocos2d-x 使用位图工具制作 fnt字体
- XML 语法规则
- Cocos2d-X 3.4版-虚拟摇杆控制精灵上下左右《赵云要格斗》
- ASP.NET MVC使用EPPlus,导出数据到Excel中
- 修改power_profile.xml解决手机耗电问题
- ResultSet转XML
- Oracle Database Data Pump(expdp/impdp)
- 对xml的顶层layout布局(操控整个layou的xml)
- [ERROR] XML Parser Error on line 11: 注释中不允许出现字