1.一般从一个函数返回一个局部对象的引用是不对的:
T & func( void )
{
T t;
return t;
}
这是因为函数return结束后,t的生命周期完结被析构。但是可以通过常量引用从函数返回一个局部对象:
const T & func( void )
{
T t;
return t;
}
...
const T & tmp= func();
这样局部变量 t 不会被直接析构,而是保留到 tmp的生命周期结束为止。
1.一般从一个函数返回一个局部对象的引用是不对的:
T & func( void )
{
T t;
return t;
}
这是因为函数return结束后,t的生命周期完结被析构。但是可以通过常量引用从函数返回一个局部对象:
const T & func( void )
{
T t;
return t;
}
...
const T & tmp= func();
这样局部变量 t 不会被直接析构,而是保留到 tmp的生命周期结束为止。