• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    C++的未來之路:C++0x概覽

    發布: 2008-4-28 09:59 | 作者: 不詳 | 來源: 無 | 查看: 67次 | 進入軟件測試論壇討論

    領測軟件測試網

    總結

     “將一個數組中所有的形狀繪制出來”是面向對象編程中一個經典的例子(回想早期Simula的日子)。使用泛型編程,我們可以將其泛化,從而支持繪制任意容器(存儲著Shape指針)中的每個元素。

    template<Container C>
    void draw_all(C& c)
    where Usable_as<typename C::value_type,Shape*>
    {
    for_each(c, mem_fun(&Shape::draw));
    }

     在C++0x中,我們希望將Container作為一個標準concept,將Usealbe_as作為一個標準判斷式。其中for_each算法已經在C++98中有了,但是接受容器(而非一對迭代器)作為參數的版本要依賴于C++0x中的concept。其中的where子句用于支持算法來表達其對于實參的要求。就這里來說,draw_all()函數(明確)要求容器中的元素必須可以被作為(即可以隱式轉換為)Shape*使用。這里的where子句通過簡單要求一個Shape*容器,為我們提供了某種程度的靈活性和通用性。除了元素為Shape*的任何容器外,我們還可以使用那些元素可以被用作Shape*的任何容器,例如list<shared_ptr<Shape*>>(其中shared_ptr將有可能成為C++0x標準庫中的一個類)、或者元素類型繼承自Shape*的容器,例如deque<Circle*>。

     假設我們有p1、p2、p3三個點,我們可以編寫如下代碼來測試draw_all():

    vector<Shape*> v = {
    new Circle(p1,20),
    new Triangle(p1,p2,p3),
    new Rectangle(p3,30,20)
    };

    draw_all(v);

    list<shared_ptr<Shape*>> v2 = {
    new Circle(p1,20),
    new Triangle(p1,p2,p3),
    new Rectangle(p3,30,20)
    };

    draw_all(v2);

     “繪制所有形狀”的例子很重要,因為如果你可以很好地實現它,那么你就掌握了大多數面向對象編程中關鍵的東西。通過融合泛型編程(concepts與模板)、常規編程(例如獨立標準庫函數mem_fun())、和簡單數據抽象(mem_fun()函數返回的函數對象),上面的代碼演示了多范型編程的力量。這個簡單的示例為我們開啟了一扇通往許多優雅和高效的編程技巧的大門。

     我希望在看完上面的例子之后,你的反應是“如此簡單!”,而不是“如此聰明!如此高級!”在我看來,許多人都在聰明和高級的道路上太過投入。但設計與編程的真正目的是使用最簡單的方案來完成工作,并用盡可能清晰的方式來表達。C++0x設計的目標便是更好地支持這樣的簡單方案。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    1111/11|<<234567891011

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>