auto_ptr在函式引數和返回值的運用
黃國強 2009-7-28
先看4個函式定義:
1) csample * func(csample2 * p);
2) csample * func(std:auto_ptrp);
3) std:auto_ptrfunc(csample2 * p);
4) std:auto_ptrfunc(std:auto_ptrp);
我在這裡舉出的這四個函式是想表明,如果不用auto_ptr而只用第一種形式。會帶來乙個問題。
即,如果不閱讀文件,第一種形式函式的呼叫者將無法搞清楚是否需要釋放引數指標和返回值的指標。可能有人說,那就看文件好了。我覺得最好的**應該是自釋義的,故引入了後三種形式。
下面分別作個說明
1) csample * func(csample2 * p);
這種形式,引數指標和返回值指標都無需釋放。
2) csample * func(std:auto_ptrp);
這種形式,返回值指標無需釋放,引數指標自動釋放,如果內部不需要引數自動釋放,可以呼叫p.release()。
3) std:auto_ptrfunc(csample2 * p);
這種形式,引數指標指標無需釋放,返回值指標自動釋放,如果呼叫者不需返回值自動釋放,應該呼叫release()。
4) std:auto_ptrfunc(std:auto_ptrp);
這種形式,引數指標和返回值指標二者都自動釋放。
函式引數和函式返回值
思考乙個問題,如下 現在需要定義乙個函式,這個函式能夠完成2個數的加法運算,並且把結果列印出來,該怎樣設計?下面的 可以嗎?有什麼缺陷嗎?def add2num a 11 b 22 c a b print c為了讓乙個函式更通用,即想讓它計算哪兩個數的和,就讓它計算哪兩個數的和,在定義函式的時候可以...
函式 返回多個引數
返回多個資料,返回的是元組 解包 用變數來接收 info xiaoming beijing haidian name addr,arte info 用三個變數來接受 print name addr,arte 區域性變數 在函式中定義的變數 沒有加global修飾 在函式裡面,除了函式就失效了 例如 ...
C 函式引數和返回值
在呼叫函式時,大多數情況下,函式是帶引數的。主調函式和被呼叫函式之間有資料傳遞關係。前面已提到 在定義函式時函式名後面括號中的變數名稱為形式引數 formal parameter,簡稱形參 在主調函式中呼叫乙個函式時,函式名後面括號中的引數 可以是乙個表示式 稱為實際引數 actual parame...