下面这句话是什么意思?请举个例子说明一下.函数可以返回引用,但却会经常出现问题.函数返回被调用函数中声明的变量的引用时,变量应在函数中声明为static

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 17:18:52
下面这句话是什么意思?请举个例子说明一下.函数可以返回引用,但却会经常出现问题.函数返回被调用函数中声明的变量的引用时,变量应在函数中声明为static

下面这句话是什么意思?请举个例子说明一下.函数可以返回引用,但却会经常出现问题.函数返回被调用函数中声明的变量的引用时,变量应在函数中声明为static
下面这句话是什么意思?请举个例子说明一下.
函数可以返回引用,但却会经常出现问题.函数返回被调用函数中声明的变量的引用时,变量应在函数中声明为static

下面这句话是什么意思?请举个例子说明一下.函数可以返回引用,但却会经常出现问题.函数返回被调用函数中声明的变量的引用时,变量应在函数中声明为static
#include
using namespace std;
int& getNum()
{
int i = 10; // warning C4172:returning address of local variable or temporary
return i;
}
int& getNumRef()
{
static int i = 10;
return i;
}
/*
因为在函数getNum结束之后,局部变量i的生命期已经结束了,这个i的在栈上的内存已经被删除了,
这时候返回它的引用就会引用到未知的区域,是很危险的.
返回static的意思就是第二个函数啦.
因为static静态变量的生存期是整个程序,这个是安全的.
但是这样用总是不好的.
同理返回堆上的也是可以的,但是也是不好的方式!
比如:int *p = new int(100);
return *p;
*/
//测试代码:
int main()
{
return 0;
}