getvalue()与getvalue1返回的区别
class A
{
public:
A(int * value):a(value){}
int *&getvalue()
{
return a;
}
int *getvalue1()
{
return a;
}
int *a;
};
getvalue()返回一个l-value;getvalue1()返回的是r-value;
前者传指针的引用,后者传指针,接收的时候产生一个指针副本。
如
class A
{
public:
A(int * value):a(value){}
int *&getvalue()
{
return a;
}
int *getvalue1()
{
return a;
}
int *a;
};
int main()
{
int i = 3;
int x = 4;
A aaa(&i);
aaa.getvalue() = &x; //可以赋值
aaa.getvalue1() = &x; //编译错误!!!!
return 0;
}