推 purpose:第一次看是要花點時間,我還是比較習慣原本寫法 11/17 01:02
→ purpose:不過在BBS畫UML類別圖,還蠻厲害的... 11/17 01:03
也沒多厲害啦~ 直接看程式碼應該會蠻混亂的吧? 畢竟
寫那麼醜.. 所以就先畫圖囉! :)
推 QQ29:請教這種寫法叫做甚麼啊? 看不懂... 11/17 01:29
→ QQ29:是傳說中的metaprogramming嗎? 11/17 01:31
這個還不是啦 XD
先建立一個class template, 在具現化時括號裡填什麼
, 它就把那個型態定義新的別名叫做 super, 而且這個
別名可以被繼承、隱藏, 就不用每次寫新類別都要自己
加 typedef 啦!
推 QQ29:目前真的看不懂一開始的template是幹嘛用的@@ 11/17 01:40
→ QQ29:好特殊 這樣下面就可以用extend這個字.... 11/17 01:40
推 QQ29:struct extends : Base 這:Base也不知道是甚麼意思.... 11/17 01:43
→ QQ29:看來我只看得懂最淺的template了orz 11/17 01:43
那個是一個型態~ template <typename Base>, 是可以
被替換掉的, 譬如把 Grandpa 代進去會得到
//┌ 這裡指繼承, struct 預設用 public
//↓ class 預設是用 private
struct extends<Grandpa> : Grandpa
{
protected: typedef Grandpa super;
};
這個類別會幫我們作好 typedef的動作, 如果我們想要
這個別名, 就繼承它!(且也已經幫我們繼承了Grandpa)
推 purpose:我認知比較寬鬆,看到角括號< >就代表內含的程式碼被當成 11/17 01:52
→ purpose:資料,送去樣板構築出新的程式碼,用到樣板就算metaprogr. 11/17 01:53
推 loveflames:要有遞迴的觀念才算metaprogramming吧 11/17 02:00
就我的認知上metaprogramming是「用程式來寫程式」,
而維基上對 template mataprogramming 的定義如下
http://ppt.cc/MxNz
樓上 XDD
※ 編輯: loveme00835 來自: 140.121.197.115 (11/17 02:14)
推 yauhh:50行程式很難看出哪裡難讀 11/17 06:47
推 QQ29:請問一下 : 不用寫public字眼 是 struct特有的寫法嗎? 11/17 21:02
→ loveflames:它預設就是public 11/17 21:05
推 QQ29:原來預設 不是只有 針對{public:不寫也是預設public呀@@} 11/17 21:05
推 aecho:咦?所以struct的繼承預設是public? 11/19 06:09
→ aecho:然後class的繼承預設是private? 11/19 06:09
→ aecho:我以為那個只有對member functions或variables…的關係… 11/19 06:10
→ loveflames:class跟struct在C++其實是一樣的東西 11/19 06:40