C++中为什么不要分割处理对象
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要讲解了"C++中为什么不要分割处理对象",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++中为什么不要分割处理对象"吧!ES.63:不要分
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
软件开发总设计师职责
mac打开数据库
网络安全数据统计
电脑显示与服务器通讯异常
sql长度超过数据库限制
天津软件开发多少钱
网络安全红线有什么用
网络安全架构师书籍
王者服务器是不是要爆炸了
广东网络安全文件
分布式服务器如何接入路由器
潜山市开展网络安全检查
服务器管理的几大因素
db2迁移达梦数据库
中国的互联网科技
带算力的服务器
jsp怎么调用数据库
廊坊网络技术公司
危害网络安全行为向哪里举报
软件开发的项目提成
为啥百度连不上服务器
服务器管理器中间件
网络安全工程师考试百度网盘
一罐软件开发
测试环境数据库搭建
web app软件开发
国家网络安全警花
邮箱服务器要加密好吗
饥荒联网服务器
网络安全预算不低于总项目的