最近在学C++里的class,然后遇到了运算符重载的问题,以下是老师写的代码:
[C++] 纯文本查看 复制代码 #include <iostream>
using namespace std;
class Thing{
int* value;
public:
Thing(int newVal = 0):value(new int(newVal)){}
void print(){cout<<*this->value;}
~Thing(){delete value;}//destructor
Thing(const Thing& rhs){value = new int(*rhs.value);}//copy constructor
Thing& operator=(const Thing& rhs){*value = *rhs.value;return *this;}//assignment op
};
int main(){
Thing one(1);
Thing two(2);
one = two;
one.print();
}
由于有指针的存在,所以重新定义了下两个object相等后该如何运算,但是我不明白的是运算符重载的时候,那个Thing& operator=(const Thing& rhs){*value = *rhs.value;return *this;}里的&代表什么。因为我在网上查找一些补充阅读的时候,大家似乎都没有加这个&,我也尝试过删除这个符号,运行似乎也没有啥问题。那么这个&到底代表什么,或者说改变了什么?有没有大神可以解读下。 |