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