谁可以详细告诉我“*这个指针”?

时间:2012-04-07 09:59:03

标签: c++ class pointers

例如,

在这一个, 我对这个指针不太了解, 这个问题不是关于operator + overload, 是关于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;
        }

    }

2 个答案:

答案 0 :(得分:3)

operator+=需要返回对当前对象的引用(在它递增之后),这样你仍然可以编写代码,如

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

此形式的运算符(采用const引用,返回引用)也称为 canonical 表单。

你在哪里获得返回的参考?您有this指向到当前对象,但您无法返回指针。因此,您使用operator*取消引用指针并返回结果:

return *this;

答案 1 :(得分:3)

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