请看下列两个代码
代码1:
1 const string manip(const string&);
2
3 void main()
4 {
5 string input;
6 cin >> input;
7 cout << "Your input is: " << manip(input)<< endl;
8 }
9
10 const string manip(const string& s)
11 {
12 string ret = s;
13 return ret;
14 }
15
2
3 void main()
4 {
5 string input;
6 cin >> input;
7 cout << "Your input is: " << manip(input)<< endl;
8 }
9
10 const string manip(const string& s)
11 {
12 string ret = s;
13 return ret;
14 }
15
代码2:
1 const string &manip(const string&);
2
3 void main()
4 {
5 string input;
6 cin >> input;
7 cout << "Your input is: " << manip(input)<< endl;
8 }
9
10 const string &manip(const string& s)
11 {
12 string ret = s;
13 return ret;
14 }
15
2
3 void main()
4 {
5 string input;
6 cin >> input;
7 cout << "Your input is: " << manip(input)<< endl;
8 }
9
10 const string &manip(const string& s)
11 {
12 string ret = s;
13 return ret;
14 }
15
代码1是正确的。代码2的manifp函数,返回了局部对象的引用。运行时会出现不可预知的错误。