Re: [問題] C++ for loop 的 string 宣告
※ 引述《SingleStar (安打星)》之銘言:
: 請問以下兩個寫法,是否在記憶體的使用方面,兩者有優劣之分嗎?
: 兩者唯一的差別在於 path 宣告的位置不同,path 這個變數在 loop 之後也不會再用到。
: 我自己習慣用 (1),先宣告起來放,不會在 loop 裡面重複宣告
: 可是從建構/解構的角度來看,是不是沒差別呢?
: 我的想法如下,煩請大大賜教。
: (1) 先宣告的時候,呼叫了 default 建構子
: loop 每跑一次,path 就做一次 "=" 的運算
: "=" 運算的時候,若原本有資料,則會先呼叫解構子,之後再存入
: 上面這一行,是對的嗎? @@?
: (2) loop 每跑一次,path 就先呼叫 default 再做 "=" 的運算,loop 結束則呼叫解構子
: 所以兩個根本沒什麼差,對嗎?
: 先感謝大家 ^^
: -----------------------------------------
: (1)
: string path;
: for( ... ) {
: path = string("xxxx") + "zzzz";
: ...
: if (xxx) return 1;
: }
: return 0;
: (2)
: for( ... ) {
: string path = staing("xxxx") + "zzzz";
: ...
: if (xxx) return 1;
: }
: return 0;
這兩個差別很大喔同學
1裡面 path是 全域變數
2裡面 path是 區域變數
你試試看在2改寫成這樣觀察這三次輸出有啥變化
string path=NULL;
cout<<path<<endl;
for( ... ) {
string path = staing("xxxx") + "zzzz";
...
cout<<path<<endl;
if (xxx) return 1;
}
cout<<path<<endl;
return 0;
--
雖然我並沒有並沒有一身溫馴的靈魂
但是我很願意很願意做那個永遠照顧妳的人
我的愛人 請聽 我有顆不善言語的心
只能夠看著妳遠去的背影
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.169.159.22
推
03/17 21:34, , 1F
03/17 21:34, 1F
→
03/17 21:36, , 2F
03/17 21:36, 2F
→
03/17 21:37, , 3F
03/17 21:37, 3F
→
03/17 21:38, , 4F
03/17 21:38, 4F
推
03/17 21:47, , 5F
03/17 21:47, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):