C++中为什么不要分割处理对象
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"C++中为什么不要分割处理对象",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++中为什么不要分割处理对象"吧!ES.63:不要分
千家信息网最后更新 2025年12月02日C++中为什么不要分割处理对象
这篇文章主要讲解了"C++中为什么不要分割处理对象",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++中为什么不要分割处理对象"吧!
ES.63:不要分割处理对象
Reason(原因)
分割指的是在赋值或初始化对象是只处理对象一部分--多数情况下会导致错误,因为对象本来希望作为一个整体被处理。极少情况下确实需要分割处理,但是这样的代码会很难理解。
Example(示例)
class Shape { /* ... */ };
class Circle : public Shape { /* ... */ Point c; int r; };
Circle c {{0, 0}, 42};
Shape s {c}; // copy construct only the Shape part of Circle
s = c; // or copy assign only the Shape part of Circle
void assign(const Shape& src, Shape& dest) {
dest = src;
}
Circle c2 {{1, 1}, 43};
assign(c, c2); // oops, not the whole state is transferred
assert(c == c2); // if we supply copying, we should also provide comparison,
// but this will likely return false
由于中心和半径不会从c复制给s,因此产生没有意义的结果。第一种保护措施禁止基类的赋值操作。
Alternative(可选项)
如果确实需要分割处理对象,定义一个显式操作完成这个功能。这样可以避免读者困惑。例如:
class Smiley : public Circle {
public:
Circle copy_circle();
// ...
};
Smiley sm { /* ... */ };
Circle c1 {sm}; // ideally prevented by the definition of Circle
Circle c2 {sm.copy_circle()};Enforcement(实施建议)
Warn against slicing.
发现分割处理发出警告。
感谢各位的阅读,以上就是"C++中为什么不要分割处理对象"的内容了,经过本文的学习后,相信大家对C++中为什么不要分割处理对象这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
处理
对象
C++
情况
学习
内容
困惑
代码
功能
半径
原因
就是
建议
思路
意义
措施
整体
文章
是在
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
兴化小型网络技术参考价格
服务器的高可用性
丽水政务软件开发定制
网络安全和信息处置制度
微信小程序云开发数据库中的图片
手机管家登录服务器无响应
服务器是通过什么做阵列
qq连接显示服务器超时
银行软件开发需求旺盛
网络安全多少不准
如何确保自己的网络安全
台州无尽网络技术有限公司
软件开发项目的独特点
网络安全防诈
和服务器通讯失败
登录器不显示服务器列表如何解决
我的世界服务器玩家用的指令
数据库主机中wa值很高
阿里云服务器一般安全吗
UNLOCK下载软件开发
保护你的网络安全漫画
江苏海航软件开发怎么样
飞鹑互联网蓝思科技
数据库系统概论第四版王珊答案
万年历的数据库是什么
北京crm软件开发工程师
网络技术专业网络构建简称网构
卸载已连接数据库
微擎 数据库备份
虹口区机电软件开发推荐厂家