在C++中,可以使用多种方式返回一个变量(对象),比如直接返回一个临时对象、返回其引用、返回其指针。
配合不同的修饰符,又可能产生不同的效果。
下面我在visualstudio2013中测试了一下什么样的保存方式是合法的,什么样的保存方式是非法的。
为了防止编译器优化影响结果,我在被调用的函数中使用了标准输入而不是直接指定字符串为一个常量值。
测试程序:
#include <iostream>
#include <string>
using namespace std;
string f()
{
string s;
cin >> s;
return s;
}
string& g()
{
string s;
cin >> s;
return s;
}
const string& h()
{
string s;
cin >> s;
return s;
}
int main()
{
{
const string &crs = f();
cout << crs << endl;
string s = f();
cout << s << endl;
string &rs = f();
cout << rs << endl;
string *ps = &f();
cout << *ps << endl;
const string *cps = &h();
cout &l