Dan*_*Dan 0 c++ overriding overloading operator-overloading
我正在尝试使用两个const参数创建一个重写的运算符函数,但我无法弄清楚如何做到这一点.这是一个简单的例子:
class Number
{
Number()
{
value = 1;
};
inline Number operator + (const Number& n)
{
Number result;
result.value = value + n.value;
return result;
}
int value;
}
Run Code Online (Sandbox Code Playgroud)
我在这里尝试做的是将两个参数传递给另外的函数,这两个参数都是const并返回结果而不更改类中的任何内容:
const Number a = Number();
const Number b = Number();
Number c = a + b;
Run Code Online (Sandbox Code Playgroud)
这是可能的,我将如何做到这一点?
谢谢,
担
inline
在类声明中理解,因此您不需要指定它.
大多数惯用语,你会operator+
在类定义之外声明一个非成员函数,如下所示:
Number operator+( const Number& left, const Number& right );
Run Code Online (Sandbox Code Playgroud)
friend
如果它需要访问Number
内部,你可能需要使它成为类的一部分.
如果你必须将它作为成员函数,那么你需要使函数本身为const:
Number operator+( const Number& n ) const
{ // ...
Run Code Online (Sandbox Code Playgroud)
对于类这样的类Number
,operator+
通常按照通常的方式实现,operator+=
您希望所有常用运算符按预期工作,并且operator+=
通常更容易实现,并且operator+
不会因为单独实现它而失去任何效率.
课堂内:
Number& operator+=( const Number& n );
Run Code Online (Sandbox Code Playgroud)
课外:
Number operator+( const Number& left, const Number& right )
{
return Number( left ) += right;
}
Run Code Online (Sandbox Code Playgroud)
甚至:
Number operator+( Number left, const Number& right )
{
return left += right;
}
Run Code Online (Sandbox Code Playgroud)