• <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)

            隨筆檔案

            文章分類

            文章檔案

            相冊

            好友博客

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            2020久久精品国产免费| 久久久久久精品久久久久| 99久久婷婷免费国产综合精品| 久久久久久国产a免费观看黄色大片| 久久精品国产男包| 久久九九有精品国产23百花影院| 国产视频久久| av色综合久久天堂av色综合在 | 国产69精品久久久久99尤物| 精品久久久久久无码中文字幕 | 77777亚洲午夜久久多喷| 一本色道久久88加勒比—综合| 久久精品国产欧美日韩99热| 国产精品久久久久9999| 久久精品国产男包| 99久久精品久久久久久清纯 | 国产精品久久免费| 一日本道伊人久久综合影| 国产99精品久久| 日韩精品久久久肉伦网站| 久久人搡人人玩人妻精品首页| 久久er99热精品一区二区| 久久这里只精品99re66| 久久高清一级毛片| 久久综合九色综合精品| 久久久久亚洲AV无码专区体验| 久久精品亚洲乱码伦伦中文| 狠狠色婷婷综合天天久久丁香| 久久精品国产免费观看| 伊人久久大香线蕉AV一区二区| 久久精品国产精品亜洲毛片| 久久天堂电影网| 色偷偷888欧美精品久久久| 国内精品久久国产大陆| 久久久久亚洲av无码专区| 久久久无码一区二区三区| 浪潮AV色综合久久天堂| 久久久久亚洲精品无码蜜桃| 久久精品水蜜桃av综合天堂| 久久久久久国产精品免费无码| 伊人久久大香线焦AV综合影院|