加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么方法应该返回一个新实例,而不是修改实例本身?

发布时间:2020-12-16 10:04:46 所属栏目:百科 来源:网络整理
导读:假设我有一个Vector3类,它包含一个normalize()方法.该方法是否应该返回一个新的Vector3,或者修改它被调用的Vector3实例(因此返回对它自己的引用(Vector3)?)有哪些情况会比另一个更优先?性能怎么样? 解决方法 答案取决于你班级的设计. 对于可变类,rotate应
假设我有一个Vector3类,它包含一个normalize()方法.该方法是否应该返回一个新的Vector3,或者修改它被调用的Vector3实例(因此返回对它自己的引用(Vector3&)?)有哪些情况会比另一个更优先?性能怎么样?

解决方法

答案取决于你班级的设计.

对于可变类,rotate应该旋转向量本身.这被认为更有效,并且在大对象的情况下,它允许您避免在向量中包含许多项目时复制大量数据.

另一方面,不可变类必须只返回新对象,因为它们不能自己变异.这增加了一些开销,但它有很多优点,特别是当必须同时使用对象时.

常见的命名约定是使用动词来改变操作,如

myVector.rotate(angle);
myVector.scale(factor);

返回新对象的操作应以past participles命名,如

auto newVector = myVector.rotated(angle).scaled(factor);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读