<分区>
考虑以下代码,我在其中返回 double&
和 string&
。它在 double 的情况下工作正常,但在字符串的情况下则不然。为什么行为不同?
在两种情况下,编译器甚至不会抛出 Warning: returning address of local variable or temporary
因为我正在返回一个引用。
#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;
}
Output:
$ ./a.exe
Double = 46.5
String =