当前位置:  开发笔记 > 编程语言 > 正文

在C++中使用const替换两个参数的运算符

如何解决《在C++中使用const替换两个参数的运算符》经验,为你挑选了1个好方法。

我正在尝试使用两个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;

这是可能的,我将如何做到这一点?

谢谢,



1> CB Bailey..:

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;
}

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有