一元减负荷:会员还是非会员?

时间:2011-09-09 15:14:52

标签: c++ operator-overloading

鉴于前缀一元运算符可以“由非静态成员函数实现,没有参数或非成员函数具有一个参数”(§13.5.1[over.unary] / 1)除了适用于任何成员/非成员函数选择的通常的封装/代码重用设计原理之外,是否存在差异?

对于二元运算符there's a semantic difference,因为非成员允许对其左侧操作数进行隐式转换。对于一元运算符似乎没有类似的东西,但标准将std::complex的一元否定运算符定义为非成员(第26.4.6节[complex.ops]),而{{1 }和std::valarray的一元否定运算符是成员(§26.6.2.6[valarray.unary],§20.11.5.3[time.duration.arithmetic])。有细微差别吗?

2 个答案:

答案 0 :(得分:2)

据我所知,与决定非运营商职能是成员还是非成员相比,没有差异。显然,在可能的情况下(如标准算法)更喜欢非成员,非朋友。

答案 1 :(得分:0)

尽可能使用会员更有意义,因为你不必和朋友发疯。但除此之外,它只是一种代码风格的决定。