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

            Design&Art

            C++博客 首頁 新隨筆 聯系 聚合 管理
              26 Posts :: 0 Stories :: 38 Comments :: 0 Trackbacks

            #

            TinyXml是一個C++的,簡單小巧,支持STL,而且跨平臺的XML解析器。
            http://www.hansencode.cn/category/tinyxml/
            posted @ 2007-09-26 16:43 安帛偉 閱讀(705) | 評論 (0)編輯 收藏

            一. 定義
            雙分派是指:接受者和參數都能在運行時決定它的類型。(從而若有同名函數的話,依參數選定目標函數)

            二. 問題的提出
            C++ 不支持雙分派,只支持單分派。也就是說參數的類型將在編譯階段決定。(雖然遇上同名函數的選取時,沒有體現多態,但進入函數后,指針參數或引用參數仍然表現了其多態)
            下面的代碼演示了該問題:
            #include <iostream>
            using namespace std;

            class D;

            //B
            class B
            {
            public:
             
            void virtual output(B * b){cout << "B:B" << endl;}
             
            void virtual output(D * d){cout << "B:D" << endl;}
            };
            class D : public B
            {
            public:
             
            void output(B * b){cout << "D:B" << endl;}
             
            void output(D * d){cout << "D:D" << endl;}
            };

            int main()
            {
                B 
            * p1 = new D;
                B 
            * p2 = new D;
                p1
            ->output(p2);
             
             
            return 0;
            }
            以上代碼的輸出結果是:
            D:B
            如果參數能夠在運行時決定類型的話,那么輸出來的信息應該是D:D,因為p2的實際類型是D。但是,事實上輸出來的結果是D:B。也就是說p2的類型被誤解為B了!這就是問題的所在。

            三. 解決方法
            Visitor設計模式
            posted @ 2007-09-19 16:18 安帛偉 閱讀(1374) | 評論 (1)編輯 收藏

                 摘要: 正則表達式是用來處理文本和匹配模式最高效、最簡單的方法。如果你不熟悉這個術語,那么“正則表達式”(Regular Expression)就是一個字符構成的串,它定義了一個用來搜索匹配字符串的模式。  閱讀全文
            posted @ 2007-09-13 16:19 安帛偉 閱讀(723) | 評論 (0)編輯 收藏

            VC6.0中調試Release版本程序

             

            有兩種方法:

            1. 在懷疑有錯誤的地方加MessageBox,在函數中顯示可能導致錯誤的變量的值。或者插入寫文件語句。輸出可能導致錯誤的變量的值到一個記錄文件。

             

            2. 在工程中設置

            ”Project Settings”里選Setting For All Configurations

            C/C++標簽中“Debug Info”選 Program Database

            link標簽中“Category”選中“Debug Info”復選框和“Microsoft Format”。

            現在就可以像在調試Debug中那樣設置斷點進行調試了。由于代碼優化,有些變量觀察不到,行的運行順序也可能不同。

             

            VS2005中調試Release版本的程序

             

            1. 在工程的屬性設置中,“鏈接”——>“調試”——>“生成調試信息”,選擇“ ”。

            2. C/C++”——>“常規”——>“調試信息形式”,選擇 /ZI”。

            3. C/C++”——>“優化”,設置“禁用”。

            posted @ 2007-09-05 17:33 安帛偉 閱讀(794) | 評論 (0)編輯 收藏

                 摘要:   在現在的標準C++中,只有一種智能指針:std::auto_ptr。其原因并非是因為auto_ptr 已足以應付所有相關的工作——實際上,auto_ptr 有一個重大的缺陷,就是它不能被用在STL 容器中——而是因為現在的C++標準在制定時并未能對智能指針進行全面的考察。按照C++標準委員會成員Herb Sutter 的說法,只有一種標準的智能指針是一件“可羞”的事情:首先,智能指針所能做的許多有用的事情,是可憐的auto_ptr 不能完成的;其次,在有些情況下使用auto_ptr 可能會造成問題,上面所說的不能在容器中使用就是一例。實際上,許多程序員已經開發了各種有用的智能指針,有些甚至在auto_ptr 被定為標準之前就已存在,但問題是,它們不是標準的。在這樣的情況下,C++標準委員會考慮引入新的智能指針,也就是自然而然的事情了。目前進入委員會視野的,主要有兩種智能指針方案:Boost 智能指針和Loki 智能指針。前者是由C++標準委員會庫工作組發起的Boost 組織開發的,而后者由世界級的C++專家Andrei Alexandrescu 開發,并在他所著的“Modern C  閱讀全文
            posted @ 2007-08-21 09:00 安帛偉 閱讀(442) | 評論 (0)編輯 收藏

            介紹:

            Boost使用的編譯系統叫做Boost.Jam(Bjam),是一個基于FTJam的構造工具,而FTJam又基于Perforce Jam

            細節:

            Jammake(1)(如果你使用UNIX就知道make(1)是什么,在這里簡單說明,make(1)是指系統工具類中,名叫make的東西)的一個替代品,Jam的目標是讓構造簡單的東西更加容易,而讓構造復雜的東西變得簡單。下面是一個例子:

            Main smail : main.c map.c resolve.c deliver.c
                 misc.c parser.y alias.c pw.c headers.c
                 scanner.l getpath.c str.c ;

            Smail從一打文件進行構造.Jam自動管理依賴的頭文件.

            Jam非常易于移植:它能在UNIX,VMS,Mac和NT平臺上.多數Jamfiles在上述平臺上本身就是可移植的.

            Jam is unintrusive: it is small, it has negligible CPU overhead, and it doesn't create any of its own funny files (c.f. Odin, nmake, SunOS make).

            Jam can build large projects spread across many directories in one pass, without recursing, tracking the relationships among all files. Jam can do this with multiple, concurrent processes.

            Jam isn't under the blinkin GNU copyright, so you can incorporate it into commercial products.

             

             

            構造Boost.Jam

            構造好了Bjam以后,要安裝它只需要將生成的執行文件拷貝到PATH變量指定的某個路徑下就可以了。各個平臺都有相應平臺的初始構造腳本用來構造可執行程序。這些腳本都接收一個可選參數,用來編譯構造的工具集的名稱。如果沒有給工具集參數沒有給,或做可用工具集的檢測,并選用一個。構造腳本接受的參數如:

            <build script name> [toolset]

            無參數的運行腳本可能是最好的選擇。

             

             

            Boost發布的Boost.Jam的源代碼在BOOST_ROOT/tools/build/jam_src.

            如果腳本檢測適當的工具集失敗可能是因為你的工具集不能自動檢測。在這些情況下,你需要在腳本參數那里指定工具集,當然這假定工具集在PATH中可以找到.注意:編譯Boost.Jam的工具集和構造Boost的工具集是獨立的。

            posted @ 2007-08-18 00:03 安帛偉 閱讀(991) | 評論 (0)編輯 收藏

            VC6打開一個文件時,提示如下錯誤:
            lines   ending   with   only   a   carriage   return   have   been   detected.   These   will   be   modified   to   include   a   line   feed.

            在對該文件進行單步調試時,實際執行的代碼與看到的錯開了一行,很是郁悶。用Source Insight和UltraEdit對該文件進行編輯和保存,仍不能解決問題。

            上網搜索了一下,發現是如下原因:
            “有兩種流行的ascII文件格式,一種是msdos,一種是unix。msdos的ascII文件的換行處用0x0d   0x0a兩個ascII表示,但unix下用0x0a表示。VC的編譯器采用msdos方式的ascII文件,所以當他遇到unix的ascII文件格式時會向你報警。”

            解決方法:
            在VC6里編輯一下該文件,再保存時VC6就會修復該問題。
            posted @ 2007-06-06 16:45 安帛偉 閱讀(2374) | 評論 (1)編輯 收藏

                 摘要: Command模式的目的是為了使命令請求方與命令的執行方解耦合。
            因解耦合可得到的好處是:1. 增加新的具體命令不影響其他的類;2. 可以把多個命令聚合在一起組成命令隊列。
            Command模式的缺點:使用命令模式會導致某些系統有過多的具體命令類。
              閱讀全文
            posted @ 2007-05-21 23:32 安帛偉 閱讀(565) | 評論 (0)編輯 收藏

                 摘要: 轉貼自:http://www.scmlife.com/viewthread.php?tid=569
            另外后面的命令列表中加了一些自己常用的自定義命令。
              閱讀全文
            posted @ 2007-05-17 15:05 安帛偉 閱讀(1584) | 評論 (0)編輯 收藏

                 摘要: 書上已經講得很清楚了,這里給出一個編譯通過的例子。 3mylist.h // file: 3mylist.h#include <iostream>template <typename T>class ListItem{public:    ListItem(T&n...  閱讀全文
            posted @ 2007-04-16 19:54 安帛偉 閱讀(849) | 評論 (0)編輯 收藏

            僅列出標題
            共3頁: 1 2 3 
            久久国产精品无| 国产亚洲美女精品久久久久狼| 久久无码专区国产精品发布| 久久96国产精品久久久| 成人国内精品久久久久一区| 亚洲国产精品成人久久| 久久亚洲日韩看片无码| 久久精品免费一区二区| 国产精品久久久久久久人人看| 亚洲乱码日产精品a级毛片久久| 久久精品18| 久久久久久国产a免费观看黄色大片 | 久久综合综合久久综合| 日产精品久久久久久久性色| 中文字幕久久波多野结衣av| 国产精品免费久久久久久久久| 国产精品久久久久影院嫩草| 国产亚洲精久久久久久无码| 亚洲人成网亚洲欧洲无码久久| 久久丫精品国产亚洲av| 69SEX久久精品国产麻豆| 久久久久四虎国产精品| 97久久精品人人澡人人爽| 欧美亚洲另类久久综合婷婷| 久久久免费观成人影院| 久久丫忘忧草产品| 久久w5ww成w人免费| 国产精品成人久久久久久久| 亚洲国产成人久久综合一区77| 亚洲AV无码久久精品色欲| 亚洲成人精品久久| 香蕉aa三级久久毛片| 久久久久亚洲AV无码麻豆| 成人精品一区二区久久久| 亚洲精品无码久久久| 国内精品久久久久久99蜜桃 | 94久久国产乱子伦精品免费| 日产久久强奸免费的看| 久久香蕉超碰97国产精品| 久久涩综合| 狠狠色丁香婷综合久久|