作者adrianshum (Alien)
看板Programming
标题Re: pointer, refernce, iterator
时间Fri Apr 10 11:26:32 2009
※ 引述《sorryChen (陈扬和)》之铭言:
: 这肯定是经典的老问题 怪我c++没学好
: 今天被说
: (1) 程式中最好不要有 *pointer 即使有也要想办法改成iterator
: (2) 传的时候也不要传pointer要传reference..
: (3) 程式里最好越少new越好...
: (1) 首先我不太清楚 如果就单纯一个指到object的pointer..
: 要怎麽typedef 成iterator..有什麽好处,
: stl container有提供的iterator type, 但如果不是用container 也要换成iterator吗
(1) 肯定是胡说八道,或者说了一半没说一半。
Iterator 本身这个 pattern 就是用来让你 iterate thru
一个 data collection 用的,和 pointer 根本是不能互
相取代的。
: (2)传的时候不传pointer..传reference..
: 但我可能object中就有pointer指到别的object 我要传进来把pointer存起来
: reference传完在function中用完 好像就没办法存起来吧
(2) 各有适用的地方,但的确,我的话,写 method 之类
我会尽量传 reference 而不是 pointer, 一来看起来清
楚,用起来也方便 (不必一天到晚 deref). 除非有些一定
要用 pointer 的情况才会传pointer.
: (3)不用new...怎麽可能阿...我object中有许多pointer..
: 他们得要接受别人传进来的pointer..或自行new那个object..
: 怎麽样的structure 可不用new呢 是用c而不用C++吗
我觉得重点是不要随处乱 new 吧。
因为根本不可能不从 heap 取得 memory,怎可能
所有 application 都只靠 stack 呢?
把物件的从属关系定好,再安排对应的 allocate/deallocate
责任,把东西都包好之後,的确在程式流程中,需要特地 new
的情况真的很少
alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.77.1.222
1F:推 sorryChen:deref有什麽坏处吗 (容易指到未定易处) 128.125.87.33 04/11 12:40
另外用起来方便程度差很远。
试想你 overload 了 operator:
(ptr 的 case)
*newNum = (*oldNum1) + (*oldNum2);
和
(ref)
newNum = oldNum1 + oldNum2;
另外 reference 一经 init 不能指往别处,*在某些情况下*
也是一个好处
2F:→ sorryChen:感谢 都是我在问问题 128.125.87.33 04/11 12:41
※ 编辑: adrianshum 来自: 219.77.1.222 (04/11 12:52)