C++为什么要保持默认操作的一贯性
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要介绍"C++为什么要保持默认操作的一贯性",在日常操作中,相信很多人在C++为什么要保持默认操作的一贯性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++
千家信息网最后更新 2025年02月03日C++为什么要保持默认操作的一贯性Example, bad(反面示例)
Enforcement(实施建议)
这篇文章主要介绍"C++为什么要保持默认操作的一贯性",在日常操作中,相信很多人在C++为什么要保持默认操作的一贯性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++为什么要保持默认操作的一贯性"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
C.22: 保持默认操作的一贯性
Reason(原因)
默认操作从概念上讲是配合严密的一整套处理。它们的语义是相互关联的。如果拷贝/移动构造和拷贝/移动赋值做的是逻辑上不同的事情,用户会感到诧异;如果构造函数和析构函数没有为资源管理提供一致的想法,用户会感到诧异;如果拷贝和移动操作没有对应构造函数和析构函数的动作,用户会感到诧异。
Example, bad(反面示例)
class Silly { // BAD: Inconsistent copy operations
class Impl {
// ...
};
shared_ptr p;
public:
Silly(const Silly& a) : p{a.p} { *p = *a.p; } // deep copy
Silly& operator=(const Silly& a) { p = a.p; } // shallow copy
// ...
};
这些操作(拷贝构造和赋值)关于拷贝的语义不同(风别是深拷贝和浅拷贝)。这会导致困惑和错误。
Enforcement(实施建议)
(复杂) 拷贝/移动构造函数和对应的拷贝/移动赋值运算符应该以同样的的解引用级别写入同样的成员变量。
(复杂)在拷贝/移动构造函数中写入的任何成员变量也应该被其他的构造函数初始化。
(复杂)如果拷贝/移动构造函数对成员变量进行深拷贝,那么析构函数应该修改该成员变量。
(复杂)如果析构函数修改某个成员变量,那么这个成员变量应该在拷贝/移动构造函数或者赋值运算符中被写入。
到此,关于"C++为什么要保持默认操作的一贯性"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
拷贝
函数
移动
变量
成员
一贯性
C++
复杂
学习
诧异
用户
不同
更多
语义
运算符
帮助
运算
严密
实用
一致
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mysql数据库平均成绩查询
汉王考勤数据库结构
世界最好的软件开发公司
c 数据库api
北京楼控管理软件开发费用
哈尔滨直播软件开发流程
内网服务器映射到公网
苹果手机软件开发人员招聘
网络安全创业者
河北省超级服务器云空间
网络安全技术有哪些论文题目
外设联网服务器
头条软件开发工具包
网络安全中国战队
versant 数据库
新野管理软件开发
数据库信息格式
管理系统用什么软件开发
u盘启动华为服务器
网络安全资质代办
福州高防服务器管理范围
我的世界方块云服务器英雄
数据库王珊第五版原文PPT
数据库技术的应用情况
移动营业厅连接服务器失败怎么办
网络安全创业者
上位机用什么软件开发最容易
落实网络安全和信息化的措施
二年级画安全教育手抄报网络安全
im数据库