在类中实现二进制减法,负,减运算符,“运算符 - ”

时间:2013-09-02 23:01:01

标签: c++ operator-overloading unary-operator

我正在研究实现一元'否定','符号反转'或'减法'运算符,可能是我班上的朋友函数。

我对正确方法的猜测是:

namespace LOTS_OF_MONNIES_OH_YEAH { // sorry, couldn’t resist using this namespace name

    class cents
    {

    public:
        cents(const int _init_cents)
            : m_cents(_init_cents)
        {
        }


    public:
        friend inline cents operator-(const cents& _cents);

    private:
        int m_cents;

    };


    inline cents operator-(const cents& _cents)
    {
        return cents(-(_cents.m_cents));
    }

}

我的猜测是否正确?

PS:理想情况下,命名空间名称应为小写,因为大写通常专门用于常量,但我认为大写提供了更大的影响。

PPS:从here

中删除了示例

1 个答案:

答案 0 :(得分:0)

一元运算符只接受一个参数(因此一元)。如果要将其实现为非成员函数,可以这样定义:

inline cents operator-(cents const& value)
{
    return cents(-value.m_cents);
}

当然,friend声明的签名需要与定义匹配。