Re: [問題] 關於class的member func

看板C_and_CPP (C/C++)作者 (World)時間16年前 (2009/04/02 13:35), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串2/2 (看更多)
原Po應該是希望這個class可以在 每次宣告的時候都給 abc::membFunc(int here)的here這個參數不同的預設值 通常寫function參數的預設值就改成像 abc::membFunc(int here=0)就好 但是原po希望可以藉由建構元設定那個初始值而不是 讓它鎖死成一個值 我的建議是你不彷多弄個成員變數先存這個預設值 ※ 引述《boson18 (boson18)》之銘言: : 假設程式碼如下 : class abc : { : public: abc(int xNum,int here);//constructor int membFunc(int here=-999); : private: : int aNum; int defHere; : } : int main() : { : ...... : } abc::abc(int xNum,int here):aNum(xNum),defHere(here) { //constructor initialize } 然後在membFunc裡先給here一個預設值 function一開始先判斷 here是不是那個預設值,如果是代表使用者想用預設值 int abc::membFunc(int here=-999) { if(here==-999) here = defHere; ....... } ↑(話說在這裡好像不能寫入=-999 一定只能在header裡寫的樣子 我不太確定) 像這樣 不過這麼做的話function宣告時這個here的值就要給一個不會被用到的值做預設值 不然有可能會剛好傳入跟預設值一樣而被改成defHere的值 而沒達到預期的結果 暫時想不出更好的解法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.18.167 ※ 編輯: world9918 來自: 220.136.18.167 (04/02 13:37)

04/02 13:47, , 1F
為什麼不用overload?無參數的版本用預設值就好
04/02 13:47, 1F

04/02 13:48, , 2F
abc::membFunc(void) & abc::membFunc(int here) 兩套函
04/02 13:48, 2F

04/02 13:48, , 3F
函數即可
04/02 13:48, 3F

04/02 14:59, , 4F
有道理 很久沒碰了沒想到 感謝
04/02 14:59, 4F

04/02 17:17, , 5F
感謝您~
04/02 17:17, 5F
文章代碼(AID): #19r4wZYf (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19r4wZYf (C_and_CPP)