Re: [問題] 函數呼叫傳參數

作者: NilPtr (神奇的空指標)   2014-12-26 00:07:56
※ 引述《Ruid (南無地藏王菩薩)》之銘言:
//原文恕刪
作者: s25g5d4 (function(){})()   2014-12-26 00:37:00
這 ID... 你今天 GO 了嗎
作者: PkmX (阿貓)   2014-12-26 09:52:00
名稱開頭是雙底限是reserved identifier吧...線然後你應該還要幫他加上一個copy ctor/assignment operatorsize() const只是讓這個method可以被const intstack使用而已然後(__size == 0)?true:false不就和 size() == 0 一樣嗎= =
作者: uranusjr (←這人是超級笨蛋)   2014-12-26 10:52:00
同上, 不要用雙底線, private member 請用單底線前飾
作者: Killercat (殺人貓™)   2014-12-26 13:12:00
C++認不得Nil 關鍵字是nullptr 沒問題的 可以當變數(?
作者: NilPtr (神奇的空指標)   2014-12-26 13:38:00
感謝指教,學到了,確實Private member這樣命名很糟糕copy建構式跟assignment運算子的話...請原諒我的偷懶XD
作者: Killercat (殺人貓™)   2014-12-26 13:49:00
其實單底線前飾也容易撞到雷,我現在看到比較多的做法是單底線後飾,不過我個人偏好前飾好看(?
作者: uranusjr (←這人是超級笨蛋)   2014-12-26 14:02:00
我覺得好看程度 _var > var_ > m_var
作者: NilPtr (神奇的空指標)   2014-12-26 14:19:00
size() const是為了不要發生類似 size()=5 這種狀況
作者: Killercat (殺人貓™)   2014-12-26 14:22:00
er...該怎麼說,size()傳回const本身就很奇怪 XD說錯 size()傳回reference本身就很奇怪 XDconst與否反而比較旁枝末節了吧 雖然立意正確啦...size()不是int就是long,傳reference沒啥好處啊...的確size()我會宣告前後各一個const 不過原因不是這個const size_t size() const;
作者: uranusjr (←這人是超級笨蛋)   2014-12-26 14:25:00
前面加 const 很怪吧, 別人只是想用還要 const_castfor (size_t i = 0; i < foo.size(); i++) // orz
作者: PkmX (阿貓)   2014-12-26 14:29:00
return value type加const沒啥意義size() = 5這種東西本來就是錯的 左邊不是lvaluesize()後面加const的意義是假設你宣告一個const intStack s;你可以呼叫s.size(); 如果你只有宣告unsigned size(); 那這個method就只能給非const的object使用
作者: Killercat (殺人貓™)   2014-12-26 17:41:00
誒對椰,我在想什麼,size的ret確不該const orz
作者: NilPtr (神奇的空指標)   2014-12-26 19:46:00
感謝各位的指教與參與討論┌(_ _)┐上面有兩位提到我的ID其實Nil是跟Lua、Ruby挖來的,ptr是純粹懶得打字XD
作者: ACMANIAC (請肥宅救救肥宅)   2014-12-26 21:11:00
this.var 最好看
作者: uranusjr (←這人是超級笨蛋)   2014-12-26 22:24:00
但 getter 就變 getVar() 超醜
作者: ACMANIAC (請肥宅救救肥宅)   2014-12-26 23:36:00
?! getVar() 看不懂哪裡醜,getter 不就這樣寫嗎
作者: NilPtr (神奇的空指標)   2014-12-27 19:34:00
這只是信仰問題吧,像是STL的Getter不會加get
作者: ACMANIAC (請肥宅救救肥宅)   2014-12-28 22:12:00
喔喔我好像看懂了
作者: Killercat (殺人貓™)   2014-12-28 23:16:00
其實getter/setter的固定格式是來自於C#(原生)跟Java的hibernate(Java本身沒這種慣例),所以放在C++看起來會滿奇怪的,因為這本來就不是C++有的東西最早應該是hibernate啦 可能還有更早 反正就變慣例了
作者: tinlans ( )   2013-01-01 01:34:00
為什麼你在 Node 知道要用 member initializers 但是在intStack 裡面卻不使用啊...
作者: NilPtr (神奇的空指標)   2013-01-07 19:14:00
有喔 ... 我放在空建構式上面,不過我懶惰沒對其他建構式做處理,其實會有問題

Links booklink

Contact Us: admin [ a t ] ucptt.com