星期四, 8月 31, 2006

by-value

嗯~剛看Effective C++ 3/e 中譯版時,「一旦程式員領悟了 pass-by-value(傳值)的效率牽連層面,往往變成十字軍戰士,一心一意根除pass-by-value帶來的種種邪惡」笑了一下。仿佛在說我~XD

之前確實是有段時間,連內建型別也以by-reference to const的方式傳遞,但在某次josh說以by-value傳遞就可後,改掉了這習慣~呵

本節主題是「Don't try to return a reference when you must return an object.」,原因是有可能傳回指向不存在物件的reference 或 其他有趣的況狀。

傳回local object之reference,結果就是造成此reference指向不存在物件,因為在離開函式時,該物件已先被刪除。

在函式內以new建立新物件,並傳回之reference,沒錯,這樣的確可以;然而,誰該負起delete的責任?

若在函式內建立static object,那就代表此object是共用的,任何接收此函式傳回的reference之物件,都將彼此影響!

沒有留言: