关于返回局部变量的引用的疑问??
#include <iostream>
#include <math.h>
using namespace std ;
double& Sum(int iNum)
{
int iBase = 2 ;
int iTemp = 0 ;
double iSum = 0 ;
double& s = iSum ;
for (int i = 0; i < iNum; i ++)
{
iTemp = iTemp + iBase * pow(10, i) ;
iSum = iSum + iTemp ;
}
return s ;
}
void main()
{
int iNumber ;
double sum ;
cout<< "Please input the number of jishu: " <<endl ;
cin>> iNumber ;
sum = Sum(iNumber) ;
cout<< "The sum is: " << sum <<endl ;
}
以上是我的代码,在vc6.0下通过(题目是求和 a+aa+aaa+aaaa+...)
我之前在effective c++上看见过这样的说法,不要返回局部变量的引用,因为栈上生成的局部变量在函数调用结束后会被析构掉,从而导致返回的引用指向一个不存在的变量(说法可能不太准确,但是我的意思就是这样),从而导致错误!
但是现在这个小代码可以编译通过并且得出正确结果(因为没考虑溢出,所以请输入小一点的数)
这到底是怎么回事情?
请高人指点一二,在线等待,谢谢!