我正在研究实现一元'否定','符号反转'或'减法'运算符,可能是我班上的朋友函数。
我对正确方法的猜测是:
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
中删除了示例答案 0 :(得分:0)
一元运算符只接受一个参数(因此一元)。如果要将其实现为非成员函数,可以这样定义:
inline cents operator-(cents const& value)
{
return cents(-value.m_cents);
}
当然,friend
声明的签名需要与定义匹配。