1

比如这个,我对this指针不是很了解,这个问题不是operator+重载,是this指针,和它的类之间的关系,

*这个指针指向什么东西?

非常感谢!

 class Integer {
        int i;
    public:
        Integer(int ii): i(ii) { }
        const Integer operator+(const Integer& rv) const {
            cout<<"operator+"<<endl;
        }

        Integer&
            operator+=(const Integer& rv) {
                i += rv.i;
                return *this;
        }

    }
4

2 回答 2

3

operator+=需要返回对当前对象的引用(在它增加之后),以便您仍然可以编写代码,例如

// UGLY CODE, ONLY TO ILLUSTRATE A POINT
Integer x, y;
x = (y += 10) + 1;

这种形式的运算符(取一个const引用,返回一个引用)也称为规范形式。

你从哪里得到返回的参考?你有this,它指向当前对象,但你不能返回一个指针。所以你取消引用指针operator*并返回结果:

return *this;
于 2012-04-07T10:10:36.533 回答
3

this标识一种特殊类型的指针。如果您创建了一个名为 x 的类 A 的对象,并且类 A 有一个非静态成员函数 f()。如果调用函数 xf(),则 f() 主体中的关键字 this 存储 x 的地址。您不能声明 this 指针或对其进行赋值。基本上this,指针作为隐藏参数传递给所有非静态成员函数调用,并可作为所有非静态函数体内的局部变量使用。

于 2012-04-07T10:16:49.993 回答