typedef struct A
{
private:
int b;
public:
void setb(int newB)
{
b = newB;
}
A(int a):b(a){}
A& getLR()
{
return *this;
}
A getValue()
{
return *this;
}
void printb()
{
cout<<b<<endl;
}
}structA;
主函数中:
structA A(768);
A.getLR().setb(12831);
A.printb();
输出结果为 12831
如果是:
structA A(768);
A.getValue().setb(12831);
A.printb();
则输出为 768
对这俩个不同结果的解释就是:
getValue函数返回时会调用一次拷贝构造函数,返回的就是一个临时值,之后这个临时值自己会析构,对临时值的操作不会影响到原值。
而getLR函数返回引用,是按址传递的,不会调用拷贝构造函数,这时对返回值的操作会影响到原值。
这两个方法返回值不同就是为了实现其不同的目的。