请大家帮忙看看一个关于函数返回值的问题 classs{public:intas(){a10}}sgetS(){saa.a200}intmain(i
请大家帮忙看看一个关于函数返回值的问题
class s
{
public :
int a ;
s(){
a=10;
}
};
s getS(){
s a;
a.a =200;
}
int main(int argc, char* argv[])
{
s ff = getS();
prinft( "%d " ,ff.a) ;
return 0;
}
按照c++ ,再 getS()里面返回一个局部对象 a .
到了a里面应该无效才对 ,怎摸我试验打出来的值是 200,
位深莫是这样,a 这个局部变量不是无效了码
那个老大给我解释一下
[解决办法]
肯定是200呀,你的getS()函数是按值传递的, 函数返回一个s类型的临时对象,
在你的s ff = getS(); 语句调用时将临时对象的值赋予ff, 在赋值语句完成后,临时对象的生命期才结束。
[解决办法]
楼上正解
简单点说
int get_i
{
int a = 5;
return a;
}
int main()
{
int i = get_i();
}
在main函数里i的值是5,一个道理
get_i返回的是临时对象,临时对象的内容是从a里copy过来的
