• <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 
            久久国产精品一国产精品金尊| 91精品国产高清久久久久久91| 伊人久久大香线蕉综合5g| 精品国产婷婷久久久| 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产精品成人久久久| 中文字幕无码免费久久| 久久青青草原国产精品免费| 久久国产福利免费| 亚洲精品美女久久777777| 久久香蕉一级毛片| 久久精品国产99国产精品导航 | 亚洲国产成人精品女人久久久 | 一本久久a久久精品综合香蕉| 狠狠色综合网站久久久久久久高清 | 久久久免费观成人影院| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 亚洲精品乱码久久久久久自慰| 四虎国产永久免费久久| 久久久久亚洲AV无码专区首JN| 色综合合久久天天综合绕视看| 狠狠色综合网站久久久久久久高清| 99久久www免费人成精品| 亚洲国产精品久久电影欧美| 国产叼嘿久久精品久久| 亚洲精品无码专区久久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 99久久国产精品免费一区二区| 国产精品美女久久久免费| 国产亚洲欧美精品久久久| 色偷偷久久一区二区三区| 日韩电影久久久被窝网| 久久久久久av无码免费看大片| 国产成人精品久久亚洲高清不卡 | 日本久久中文字幕| 久久99精品久久久久久9蜜桃| 国产精品久久99| 国产精品一久久香蕉国产线看观看| 久久最近最新中文字幕大全| 国产精品免费久久久久久久久| 久久久久久久久久久|