作者:
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 請用單底線前飾
C++認不得Nil 關鍵字是nullptr 沒問題的 可以當變數(?
作者:
NilPtr (神奇的空指標)
2014-12-26 13:38:00感謝指教,學到了,確實Private member這樣命名很糟糕copy建構式跟assignment運算子的話...請原諒我的偷懶XD
其實單底線前飾也容易撞到雷,我現在看到比較多的做法是單底線後飾,不過我個人偏好前飾好看(?
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2014-12-26 14:02:00我覺得好看程度 _var > var_ > m_var
作者:
NilPtr (神奇的空指標)
2014-12-26 14:19:00size() const是為了不要發生類似 size()=5 這種狀況
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:00return value type加const沒啥意義size() = 5這種東西本來就是錯的 左邊不是lvaluesize()後面加const的意義是假設你宣告一個const intStack s;你可以呼叫s.size(); 如果你只有宣告unsigned size(); 那這個method就只能給非const的object使用
誒對椰,我在想什麼,size的ret確不該const orz
作者:
NilPtr (神奇的空指標)
2014-12-26 19:46:00感謝各位的指教與參與討論┌(_ _)┐上面有兩位提到我的ID其實Nil是跟Lua、Ruby挖來的,ptr是純粹懶得打字XD
作者:
ACMANIAC (請肥宅救救肥宅)
2014-12-26 21:11:00this.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喔喔我好像看懂了
其實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有喔 ... 我放在空建構式上面,不過我懶惰沒對其他建構式做處理,其實會有問題