读书人

不能返回局部变量的引用,该如何解决

发布时间: 2012-04-22 18:34:46 作者: rapoo

不能返回局部变量的引用
class A
{...
};
....

ostream& operator <<(ostream& os,const A object)
{...
os<<....
...
return os;
}

C++有条标准:不能返回局部变量的引用,为什么此处可以返回os的引用,os也是局部变量呀?

[解决办法]
os 不是局部变量,而是 调用<<时的 第一个参数的引用
[解决办法]

探讨
而是 调用<<时的 第一个参数的引用

[解决办法]
这个os是函数的引用型参数,因此在退出函数之后生命周期不会结束。不被称为局部变量。
如果是ostream& operator <<(ostream os,const A object),这个os才是局部变量。

探讨

os 不是局部变量,而是 调用<<时的 第一个参数的引用

[解决办法]
探讨
class A
{...
};
....

ostream& operator <<(ostream& os,const A object)
{...
os<<....
...
return os;
}

C++有条标准:不能返回局部变量的引用,为什么此处可以返回os的引用,os也是局部变量呀?

[解决办法]
ostream& operator <<(ostream& os,const A object)
os不是局部变量,是个引用入参,所以可以返回。
[解决办法]
你返回的是os,不是os的引用
[解决办法]
ostream& operator <<(ostream& os,const A object)
os不是局部变量,是个引用入参,所以可以返回。

读书人网 >C++

热点推荐