• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 18,  comments - 104,  trackbacks - 0
            re: C++下垃圾回收器的實現(一) 尹東斐 2010-02-08 17:25
            @Bill Gates

            我之前提到這個Hans_Boehm GC, 它由于是Conservative Garbage Collector,所以沒有辦法證明其絕對安全。

            他的算法通過指針的地址判斷指針是否在堆上,重載全局new以后,他控制了所有內存分配,他知道堆上最小的地址和最大的地址,然后通過判斷指針的地址是否落在在個區域內部來判斷這個指針在堆上還是棧上。

            這種方法沒辦法實現內存緊縮的功能。

            還有,在工程中,用到其他庫的的時候都會考慮包裝,一般不會直接使用,加一個間接層,即使它的內存不完全由你控制,但是你還是可以部分控制的。
            re: 自動求導模板庫 尹東斐 2009-12-07 11:10
            下載的文件放在和其他程序文件相同的目錄下,然后#include“ad.h”
            要不你可以放在其他文件下,然后#include “xxx/ad.h"

            具體用法參見前面的example。
            @wulin

            不需要考慮存儲程序的空間,因為數據和程序在內存中完全沒有區別。所以從某種角度來看,程序也是數據的一種。
            比如:
            class A
            {
            public:
            int i;
            };

            VL_BEGIN_INSPECTOR_DECLARATION
            VL_BEGIN_BASE_CLASS(A)
            VL_ADD_CLASS_MEMBER(i)
            VL_END_CLASS(A)
            VL_END_INSPECTOR_DECLARATION

            A a;

            現在我要通過類似 int x = func(a, "i"); 來的到a中i的值,那這個時候,怎么知道i的類型呢?也就是說func的返回值是從哪里來的?

            不吝賜教~
            @陳梓瀚(vczh)

            >>VL_ADD_CLASS_MEMBER(Weight)可以得到Weight的類型,這個用模板就可以了。

            這個用模板也做不到吧? 除非有typeof之類的操作符,否則拿不到類型的呀。
            這實現看起來很有誘惑力 :0

            有點不太懂,請指教:

            136 VL_BEGIN_BASE_CLASS(Animal)
            137 VL_ADD_CLASS_MEMBER(Age)
            138 VL_ADD_CLASS_MEMBER(Weight)
            139 VL_END_CLASS(Animal)

            在VL_ADD_CLASS_MEMBER的時候,沒有涉及到成員的類型,那么當讀取數據的時候,類型是怎么得到的?

            GetConsole()->WriteLine(Converter.FindToStringConverter(Inspector)->ConvertToString(Inspector,Type.Object()));

            你在這里用到了Type.Object(),我想問你是不是把所有類型都包裝起來了,相當于每個類型都有個get_type()之類的方法,如果你是這么實現的,那就沒有問題了。如果不是的話,

            197 VL_ObjectInspector::Ptr Inspector=Manager->GetInspector(L"VL_ObjectType");

            188 VL_ObjectInspector::Ptr Inspector=Manager->GetInspector(VL_InspectorSelector<Animal>::GetID());

            我想這兩句的作用應該是一樣的,只不過VL_InspectorSelector<Animal>是在宏里面特化的,L"VL_ObjectType"是你為所有“內建”類型寫的。

            難道Inspector里面包含有每個成員的類型?
            re: 類實例能做做模板參數嗎? 尹東斐 2009-06-04 23:52
            @hdqqq

            嗯,謝謝,領教了。
            re: 類實例能做做模板參數嗎? 尹東斐 2009-06-02 20:20
            @hdqqq

            樓上eXile說了,這個類型是叫函數類型的,但是它不能被實例化。也就是你的type_func。
            @飄飄白云

            我只是覺得這個rvalue reference是最重要的特性,可以不知不覺的增加效率,所以就決定寫點什么。
            恩,你全文翻譯了,敬佩中,這三篇雖然看了,我覺得rvalue reference比較有意思。

            當然樓上說這些特性微不足道,是因為他還沒到能看出來這些特性強大之處的境界~~

            不過不知道為啥vc10不支持conception,這個鄙人認為是最強大的特性之一了,有了這個,就可以和那種上百KB的error message說再見了。
            re: 類實例能做做模板參數嗎? 尹東斐 2009-05-27 14:04
            @hdqqq

            在模板的位置上,它的確是個類型,但是我不知道你想說明什么?

            整篇文章,我都在嘗試說明在模板參數的位置上,std::string()只是個標記,純粹用作類型推導,只是這種寫法很容易會誤導人讓人認為那是個構造函數。而這個誤導源自于 return type deduction,因為在新的C++0x中,可能會有

            int Test()
            {
            return 3;
            }

            type(Test()) i = 8;

            如果這個被實現的話(vs2010已經有auto了,我想這個應該不遠了).編譯器可以做返回類型推導,那么在模板參數的位置上,寫函數調用也就不足為奇了。

            所以,這篇文章主要想說明,到目前為止,函數返回類型是推導不出來,而類似std::string()的寫法只是個折中方案而已。

            當然不是構造函數調用。
            re: 類實例能做做模板參數嗎? 尹東斐 2009-05-25 19:08
            @hyrish

            你說的那種是函數模板,函數模板的模板參數可以靠編譯器自動推導,以類型明確的變量為基礎。而在類模板中,只能事先聲明,然后使用,編譯器無法推導。
            這個解法很好,在lambda沒有誕生之前,c++只能這么寫,很折磨人。
            如果用boost::lambda的話,這個問題就可以寫成:

            map<int, int> testMap;
            testMap[1] = 3;
            testMap[2] = 3;
            testMap[4] = 3;
            testMap[6] = 3;

            int nCount = count_if(testMap.begin(), testMap.end(), bind(&pair<const int, int>::first, _1) < 5); // nCount == 3.
            我覺得這個可以考慮重新定義一個
            template <class T, int N>
            class my_allocator
            : public allocator<T>
            {
            //按照N分配空間
            };

            template <int N>
            class my_string
            : public basic_string<char, char_traits<char>, my_allocator<char, N> >
            {};

            這樣子實現起來,不用考慮異常安全等問題,標準庫會考慮這個,因為allocator的實現比起string來,簡單多了。
            re: boost::shared_ptr 的 cast 尹東斐 2009-05-01 23:25
            @陳梓瀚(vczh)

            嗯,謝謝提醒,我理解有問題。
            re: std::endl 是什么? 尹東斐 2009-04-18 21:08
            @OwnWaterloo

            嗯,就是這樣子的。
            其實可以直接從basic_ostream繼承,然后把stream_buf改成自己想要的輸出方式就可以。
            都不知道FPU還能直接算sin,cos,太牛了。
            @Sandy

            對的,我犯錯誤了。 public要放前面。
            像Sunshine Alike的編譯器報的錯就有點奇怪,private指的是access不可見的。
            @Sunshine Alike
            不好意思,public 應該放前面。

            codeblocks 的編譯錯誤有點奇怪的說,因為private的東西對子類來說是可見的,就是是private的,也不至于'base' has not been declared,很奇怪。
            @路人丁
            我嘗試兩個編譯器VS2005 & VS2008,不知道你的編譯器怎么樣?
            很贊。
            我自從看了 C++ Templates are Turing Complete 以后,覺得很汗~
            這些大牛們都已經在理論上證明c++ template是圖靈機等價的,也就是說可以在編譯器做任何想做的事,就對研究模板失去了興趣。
            感嘆,模板的技法實在太少了,這么長的代碼,大部分都在重復,真期待0x趕緊到來,可以在模板中使用 <...> .
            多交流吧。
            re: Pascal簡化版 尹東斐 2009-04-09 23:44
            不錯,如果結構設計的好的話,擴展可支持的類型,添加新的功能是很容易的。
            如果你有scope的概念的話,增加函數功能也很容易。

            加油。
            @陳梓瀚(vczh)

            很精辟,贊。
            @蔡芳鈞
            @wulin

            歡迎來頂 : )
            @jans2002

            模板現在是不好調試,不過好像VC 10的 intellisence 會有幫助吧。 還沒有用過。

            我目前的水平主要還是自己推,不知道大牛們玩模板是不是和咱寫程序一樣輕松。。。
            @ebenzhang

            boost::any的實現中,用type_info配合static來做類型檢查。
            所以我說他用RTTI。

            我意思是不想通過使用 typeid 獲得 type_info,從而檢查類型。

            我沒有說清楚,謝謝提醒。
            @lwan

            這里還是要動靜結合的,所有cast都是運行期做的事情。在編譯期,能用的運算型關鍵字少得可憐,像 sizeof 這種。所以有必要的時候,可以借助運行期的特性。

            靜態還是為動態服務的,不必在他們之間畫出一條道來,從此不往來。只要能盡可能的解決問題,并優雅,高效就是王道。
            <2010年2月>
            31123456
            78910111213
            14151617181920
            21222324252627
            28123456
            78910111213

            常用鏈接

            留言簿(4)

            隨筆檔案

            文章分類

            文章檔案

            相冊

            好友博客

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            蜜臀久久99精品久久久久久小说| 色欲综合久久中文字幕网| 久久99热只有频精品8| www性久久久com| 久久国产午夜精品一区二区三区| 国内精品久久久久影院老司| 色综合久久中文字幕无码| 国产高潮国产高潮久久久| 久久午夜福利电影| 日韩精品久久久肉伦网站| 久久精品中文字幕第23页| 亚洲中文字幕久久精品无码喷水| 久久99国产精品99久久| 久久AV无码精品人妻糸列| 天天爽天天爽天天片a久久网| 人妻无码精品久久亚瑟影视 | 亚洲精品99久久久久中文字幕| 亚洲乱码中文字幕久久孕妇黑人 | 亚洲国产美女精品久久久久∴ | 久久久久久精品免费看SSS| 久久亚洲精品视频| 久久久噜噜噜久久中文福利| 国产精品成人99久久久久 | 国内精品久久久久久不卡影院 | 人妻少妇久久中文字幕一区二区| 久久国产成人亚洲精品影院| 国产精品99久久免费观看| 国内精品久久久久影院薰衣草 | 亚洲日本va午夜中文字幕久久| 精品久久一区二区三区| 国产成人久久精品一区二区三区| 成人午夜精品无码区久久| 欧美国产精品久久高清| 国产免费久久精品丫丫| 国产一区二区三区久久| 无码人妻久久久一区二区三区| 久久国产精品无| 久久综合给合综合久久| 日韩精品无码久久一区二区三| 久久久久国色AV免费观看| 日本久久久久久久久久|