'da bir başvuru döndürme double&
ve string&
döndürdüğüm aşağıdaki kodu dikkate alın. Bir çifte durumunda iyi çalışır, ancak bir ip durumunda olmaz. Davranış neden farklı? Ben bir başvuru dönen olarakC++
her iki olgu derleyici bile Warning: returning address of local variable or temporary
atmaz.
#include <iostream>
#include <string>
using namespace std;
double &getDouble(){
double h = 46.5;
double &refD = h;
return refD;
}
string &getString(){
string str = "Devil Jin";
string &refStr = str;
return refStr;
}
int main(){
double d = getDouble();
cout << "Double = " << d << endl;
string str = getString();
cout << "String = " << str.c_str() << endl;
return 0;
}
Çıktı:
$ ./a.exe
Double = 46.5
String =
Benzer bir gönderiim vardı ve cevaplar çok yardımcı oldu. Ayrıca, işlevle ilgili http://stackoverflow.com/questions/2612709/why-does-this-object-wonk-out-get-deleted – brainydexter