Re: [問題] 再問 *(取值) 與 copy assign的效率呢!?

看板C_and_CPP作者時間14年前 (2009/12/19 11:40), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
包含上面那個.和->的差異 這些問題的答案都是case by case的... 先從簡單的說 .和->的差異 這去看inside the C++ object model裡面就有寫啦 class裡面沒有vptr的情況下 這兩者一樣快 .只不過是透過this指標去取值 這兩個都要作一次 derefernce 在動態多型的情況下 要在run time去查vptr的(指標的->, reference的.)一定比較慢 效率數據的比較在書裡都有列了 下面那個問題 我不太懂*iter指的是什麼 是一個dereferece後能轉型成A*的iterator,還是單純是一個A* 如果iter其實只是A* 你不該用這個變數名稱.. 如果是前者 這牽涉到的變因太多了 包含你iterator的實作結構、轉型的overhead iterator在dereference的時侯有沒有side effect.. 這些變因造成其效率要實測才知道 如果是後者 在compiler最佳化下通常是沒差的 (*iter)的值,就算你不用一個變數存起來 Compiler在最佳化的時侯也會弄進一個暫存器裡 ※ 引述《asail0712 (emeth)》之銘言: : A *a = *iter; : if(a) : { : a->... : } : 或是 : if(*iter) : { : (*iter)->.... : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.5.35 ※ 編輯: holymars 來自: 114.32.5.35 (12/19 11:41)
文章代碼(AID): #1BB4j3x- (C_and_CPP)
文章代碼(AID): #1BB4j3x- (C_and_CPP)