class A
{
int x,y;
public:
A(int a=0,int b=0)
{x=a;y=b;}
/* ... */
}
A& fctr()
{
A loc(1,2);
return loc;
}
让我们检查一下这条指令:
A x=fctr();
fctr()
返回对已销毁对象的引用... <<这不是问题-_-
在上面的指令中,根据 fctr 返回的引用,程序将销毁的对象loc复制到 x 中。
另一方面,按值返回将对象loc复制到 x !
我看到的唯一区别是,当通过引用返回时,对象loc被破坏,但是当按值返回时,对象loc在指令完成之前不会被破坏。
所以按值返回似乎是安全的,它和按引用返回一样!
我在书中读到的和从人们那里听到的是,按引用返回比按值返回要快...
那么为什么按引用返回比按值返回快呢?
...我认为我错了,但我不知道是什么?!!!