gpt4 book ai didi

C++ : Suggest names for mutating and non-mutating versions of a member function

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:06:20 28 4
gpt4 key购买 nike

假设我有一个 Image 类,我想提供一些图像操作,比如缩放、旋转等。我想为每个操作提供两种类型的功能。一种修改对象,另一种不修改。在 Ruby 中,有些函数以 !并指出这个将修改参数。

因为这在 C++/Java 中是不允许的,最好的命名约定是什么。例如你如何命名 img.scale() 的变异和非变异版本?

谢谢

最佳答案

一种选择是对变异版本使用 Scale,对非变异版本使用 ScaleCopy,因为它返回一个 copy对拷贝执行操作的原件。

另一种选择是使非变异版本成为非成员函数。例如,

Image Scale(Image im, double scale_factor) {
im.Scale(scale_factor);
return im;
}

我倾向于非成员方法,因为它减少了类中成员函数的数量。引用 Herb Sutter 的 Monoliths Unstrung ,“在可能的情况下,更喜欢将函数编写为非成员非 friend 。”

关于C++ : Suggest names for mutating and non-mutating versions of a member function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3631858/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com