gpt4 book ai didi

c++ - 使用具有不同参数的相同运算符

转载 作者:行者123 更新时间:2023-11-28 03:47:10 24 4
gpt4 key购买 nike

我正在考虑“ map 的 map ”类型,想知道拥有两个 operator[] 是否会被视为不好的做法,不同的参数具有不同的含义。假设“外部” map 由 OuterKeyType 索引,内部 map 由 InnerKeyType 索引,我们有一个“ map 的 map ”m 的对象>。然后行为将是 m[OuterKeyType] 将返回(引用)由该键索引的整个内部映射,而 m[InnerKeyType] 将返回一个复合形式通过对索引元素上的所有映射进行某种操作(可以假设所有映射都具有相同的键集)。

那么,这种设计是违反直觉且不好,还是只是方便而好?

最佳答案

首先,仅通过传递的操作数将不同的行为隐藏在同一函数名下通常是一个非常糟糕的主意。当您遇到 obj[value] 时,很难确定将触发什么逻辑,因为它会根据 value 是什么而具有完全不同的行为,这可能会也可能不会在阅读此代码时可见。

我建议您为操作提供命名 函数,仅仅因为您可以重载运算符并不意味着您应该。根据域的不同,函数会有不同的名称:obj.getX(value)obj.getY(value) 更容易理解,前提是 XY 是合理的名称。

关于c++ - 使用具有不同参数的相同运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7268285/

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