#include?<iostream>
#include?<string>
using?namespace?std;
const?string?&?version3(string?&?s1,?const?string?&?s2);?//?bad?design
int?main()
{
?string?input;
?string?copy;
?string?result;
?cout?<<?"Enter?a?string:?";
?getline(cin,?input);
?copy?=?input;
?cout?<<?"Your?string?as?entered:?"?<<?input?<<?endl;
result?=?version3(input,?"@@@");
?cout?<<?"Your?string?enhanced:?"?<<?result?<<?endl;
?cout?<<?"Your?original?string:?"?<<?input?<<?endl;
?return?0;
const?string?&?version3(string?&?s1,?const?string?&?s2)?//?bad?design
{
?string?temp;
?temp?=?s2?+?s1?+?s2;
?//?unsafe?to?return?reference?to?local?variable
?return?temp;
}
答案時(shí)程序試圖引用已釋放的內(nèi)存??但是沒(méi)看到啊,難以理解
1 回答
已采納

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
main 函數(shù)缺了尾大括號(hào),不過(guò)應(yīng)該是貼代碼時(shí)落下了吧。
在 version3 中,你返回的是函數(shù)中的變量 temp。這個(gè) temp 的作用域僅在函數(shù)之中,在函數(shù)運(yùn)行結(jié)束后 temp 會(huì)被銷毀,這樣返回的這個(gè)引用就引用無(wú)效對(duì)象了。
在函數(shù)返回引用時(shí)一定要注意不要返回函數(shù)的 local 變量。
- 1 回答
- 0 關(guān)注
- 1411 瀏覽
添加回答
舉報(bào)
0/150
提交
取消