在这一个, 我对这个指针不太了解, 这个问题不是关于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;
}
}
答案 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
指针作为隐藏参数传递给所有非静态成员函数调用,并且可作为所有非静态函数体内的局部变量。