将此布尔值传递给此函数的最有效方法是什么?
what is the most efficient way to pass in this bool to this function?
我在另一个类中有一个函数,它将每帧调用一次,我想知道传递此布尔值的最佳方法。最好的方法是什么?我有两个选择,我不确定最好的选择是什么?或者是否有更好的方法来完全做到这一点?有问题的布尔值是"减少布尔值">
选项 1:
Class 1:
void Update()
{
SkillSelectionArrow skillArrow
skillArrow.Update(deltaTime, &skills.weight, true);
}
Class 2:
void SkillSelectionArrow::Update(float * deltaTime, int *valueToBeChanged, bool decrease)
{
if (this->CheckSpecificCollision(mouse) && input->getMouseLeftDown() == true)
{
decrease == true ? valueToBeChanged++ : valueToBeChanged--;
}
}
或者初始化布尔值会更有效并传递它,例如:
选项 2:
Class 1:
void Update()
{
SkillSelectionArrow skillArrow
bool decrease = true;
skillArrow.Update(deltaTime, &skills.weight, &decrease);
}
Class 2:
void SkillSelectionArrow::Update(float * deltaTime, int *valueToBeChanged, bool *decrease)
{
if (this->CheckSpecificCollision(mouse) && input->getMouseLeftDown() == true)
{
*decrease == true ? valueToBeChanged++ : valueToBeChanged--;
}
}
谢谢
按值传递通常更适合小对象。指针可能大于对象本身。
一般规则是,如果对象的大小小于2*sizeof(void*)
,则按值传递。(见 https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-in(
因此,float
和int
通常是按值传递的(除非你想在函数中修改它们!
请注意,性能影响可能非常小,可能可以忽略不计。更重要的是能够理解方法的意图。当你通过指针时,看起来好像你想修改对象,但对于布尔值,你不想这样做,对吧?
相关文章:
- 在C++中初始化向量映射的最有效方法
- 将此布尔值传递给此函数的最有效方法是什么?
- 比较C++变量的最有效方法
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 存储变量的更有效方法是什么?
- 确保套装新鲜度的有效方法
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 在C++事务之间存储大量字符数据的有效方法
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 检查两个向量是否并行的最有效方法
- 从浮点数中删除小数部分但保留类型的有效方法
- 传递非泛型函数的最有效方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 创建字符串数组的有效方法
- 返回一个引用C++中另一个类对象的对象的有效方法
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 从std::map值中获取密钥的有效方法