設計課程
https://www.youtube.com/playlist?list=PL8209C3B494AFF49C
2014年4月18日 星期五
2014年4月17日 星期四
簡單實作 boost::function 的主要功能
trace goost::function 真的像在走迷宮,它使用大量的 macro 層層相扣,但也只提供最多 10 個參數可以使用,若參數個數能無限制還情有可原,只為 10 個參數搞得這麼誇張,不如使用暴力法還來得簡單明瞭。
goost::function 其實也沒什麼,主要的關鍵在要怎麼把函數的 type 分離出來,比如 goost::function<char(float,int)> 中的 char(float,int) 是一個 type,要怎麼分離出 char、float 和 int 這三個 type?goost::function 是借用特製化 class 自動匹配 type 的技巧,以下用例子說明:
goost::function 其實也沒什麼,主要的關鍵在要怎麼把函數的 type 分離出來,比如 goost::function<char(float,int)> 中的 char(float,int) 是一個 type,要怎麼分離出 char、float 和 int 這三個 type?goost::function 是借用特製化 class 自動匹配 type 的技巧,以下用例子說明:
2014年4月6日 星期日
成員函數指標的奇異現象
這方法蠻特殊的,不知是否有實用的價值,很像為 Base 附加功能,不過的我寧願採用延伸介面的方法
1 #include <iostream>
2
3 using namespace std;
4
5 class Base1
6 {
7 public:
8 // Constructor
9 Base1(){}
10 // Destructor
11 ~Base1(){}
12 };
13
14 class Derived1:public Base1
15 {
16 int m_data;
17 public:
18 // Constructor
19 Derived1()
20 {
21 m_data = 0;
22 }
2014年4月3日 星期四
CxxlMan 程式庫源碼
先要有一套 svn 使用端的工具,比如 TortoiseSVN,Checkout URL 填入 http://cxxlman.googlecode.com/svn,即可取得源碼。其內不包含 Make,僅是作為參考、瞭解之用。
程式庫的取得和用法在 http://cxxlman.cxxl3d.tk/
程式庫的取得和用法在 http://cxxlman.cxxl3d.tk/
2014年3月11日 星期二
2014年2月19日 星期三
C++ 延伸介面也延伸實作
在 C++ 中若要增加一個介面類別的功能,就得從這個介面類別再延伸出一個新介面類別,在其中增加新功能,但這要實作可麻煩了,還得把舊介面所宣告的功能再寫一次,以下這範例的做法可省去這層麻煩,不過得有舊實作的原始碼才行。
注意對介面的繼承須加一個 virtual
注意對介面的繼承須加一個 virtual
1 #include <iostream>
2
3 using namespace std;
4
5 // 介面
6 class IBase
7 {
8 public:
9 IBase(){}
10 virtual ~IBase(){}
訂閱:
文章 (Atom)