- 论坛徽章:
- 7
|
#include <iostream>
#include <string>
using namespace std;
string& foo()
{
string* str = new string("abc");
cout << "Address in foo:" << str << endl;
return *str;
}
int main(int argc,char *argv[])
{
for(int i = 0; i < 10; ++i)
{
string *str1 = &foo();
cout << *str1 << endl;
cout << "Address in main:" << str1 << endl;
//delete str1;
}
return 0;
} |
在AIX上运行输出如下:
Address in foo:20003068
abc
Address in main:20003068
Address in foo:200030e8
abc
Address in main:200030e8
Address in foo:20003138
abc
Address in main:20003138
Address in foo:20003158
abc
Address in main:20003158
Address in foo:200045e8
abc
Address in main:200045e8
可以看出,返回的确实是foo中new出的对象。 |
|