请大家帮忙看看一个关于函数返回值的有关问题

请大家帮忙看看一个关于函数返回值的问题 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过来的