class Object
{
private:
int value;
public:
Object(int x = 0) :value(x){}
~Object(){}
int GetValue() const{ return value; }
void SetValue(int x){ value = x; }
int &Value(){ return value; }//返回的是地址,是value的引用,也就是value本身
const int & Value() const{ return value; }
};
int main()
{
Object obj(10);
const Object obja(20);
int x = obj.GetValue();
obj.SetValue(100);
x = obj.GetValue();
x = obj.Value();
obj.Value() = 200;//赋值给了函数的返回值
//Value(&obj)=100;obj.value=100;
obja.Value();
return 0;
}
当函数返回一个引用时,则返回一个指向返回值的隐式指针。
寄存器放的value的地址。使用函数返回引用达到了两个目的:1、即可取值。2、也可赋值。
注意:不要以引用的形式返回局部变量,局部变量的生存期受到函数的影响,函数结束之后空间已经被释放,通过地址去获取值就有问题。常对象只能调用常方法。