gpt4 book ai didi

C++ 重载相等运算符。我应该编写我的函数来接受通过引用或值传递的参数吗?

转载 作者:行者123 更新时间:2023-11-28 01:22:56 25 4
gpt4 key购买 nike

我想为一个简单的结构重载 == 运算符

struct MyStruct {
public:
int a;
float b;
bool operator==( ) { }
}

我看到的所有示例似乎都使用 & 通过引用传递值。

但我真的很想按值传递这些结构。

我这样写有什么问题吗

bool operator== (MyStruct another) { return ( (a==another.a) && (b==another.b) ); } 

最佳答案

当您按值(value)传递时,期望您支付拷贝的罚金真的无关紧要。这适用于结构非常重的情况。在您引用的简单示例中,可能没有太大区别。

也就是说,通过 const reference 传递更有意义,因为它清楚地表达了重载函数 == 的意图。 const 确保重载函数不会意外修改对象,并且通过引用传递可以避免复制。对于 == 运算符,无需仅出于比较目的传递拷贝。

如果您担心一致性,最好将其他按值传递实例切换为按常量引用传递。

关于C++ 重载相等运算符。我应该编写我的函数来接受通过引用或值传递的参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55267849/

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