C++为什么要保持默认操作的一贯性
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍"C++为什么要保持默认操作的一贯性",在日常操作中,相信很多人在C++为什么要保持默认操作的一贯性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
住建部bim数据库官网
福建时代网络技术创新服务
中央企业网络安全监管平台
莆田市网络安全支队支队长
企业员工培训网络安全
网络安全知识班会导入
北京市软件开发公司招聘
软件开发培训要求学历
软件开发纠纷代理词
网络安全应急知识宣传
数据库adg
甲骨文数据库学习
福山区app定制软件开发公司
达梦数据库 odbc配置
软件开发安慰师
火狐 代理服务器
以资产管理系统数据库为数据源
中控怎么修改数据库
网络安全心理健康教育
oracl数据库是什么
中国药学会数据库
方舟非官方服务器会有别人吗
软件开发与应用软件开发
聚宝坊的游戏服务器怎么填
关系数据库支持写操作吗
精易通洗浴管理系统建立新服务器
网络安全低级错误
软件开发为什么要有需求分析
天津民航网络安全会
软件开发转什么比较好