Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 实现一元减法、求反、减法运算符;运营者–“;课堂上_C++_Operator Overloading_Unary Operator - Fatal编程技术网

C++ 实现一元减法、求反、减法运算符;运营者–“;课堂上

C++ 实现一元减法、求反、减法运算符;运营者–“;课堂上,c++,operator-overloading,unary-operator,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)

我正在研究实现一元“否定”、“符号反转”或“减法”运算符,可能是我的类的一个朋友函数

我想正确的方法是:

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:从

中撕下示例一元运算符只取一个参数(因此为一元)。如果要将其实现为非成员函数,可以如下定义:

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

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

:)@melak47谢谢,这也提供了很多有用的信息,但不是关于一元运算符-,还是要谢谢,反正我马上就要用了!(不管怎样,我猜对了。)(:@EdwardBird:那么你的问题是什么…?询问我的猜测是否正确。我怀疑我错过了什么,但看起来我第一(第二)次猜对了时间?如果不确定,通常也可以问一个问题。就搜索结果所能告诉我的而言,这个问题以前从未被问过。@EdwardBird:好的,很公平。顺便说一句,只是为了好玩:您还可以定义一元加号:
inline cents operator+(cents value){return value;}
它很少特别有用,但为了完整性…是的,好主意-似乎是实现这两个的好主意。我假设如果没有
操作符+
,编译器会抱怨如果我尝试这样做:
美分c1(10);美分c2(12);c1=+c2
?@EdwardBird:是的,这是正确的。然而,像这样的表达式很少被使用。