亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        C++中用函數(shù)模板實(shí)現(xiàn)和優(yōu)化抽象操作

        字號(hào):

        本文介紹函數(shù)模板的概念、用途以及如何創(chuàng)建函數(shù)模板和函數(shù)模板的使用方法......
            在創(chuàng)建完成抽象操作的函數(shù)時(shí),如:拷貝,反轉(zhuǎn)和排序,你必須定義多個(gè)版本以便能處理每一種數(shù)據(jù)類型。以 max() 函數(shù)為例,它返回兩個(gè)參數(shù)中的較大者:
            double max(double first, double second);
            complex max(complex first, complex second);
            date max(date first, date second);
            //..該函數(shù)的其它版本
            盡管這個(gè)函數(shù)針對(duì)不同的數(shù)據(jù)類型其實(shí)現(xiàn)都是一樣的,但程序員必須為每一種數(shù)據(jù)類型定義一個(gè)單獨(dú)的版本:
            double max(double first, double second)
            {
            return first>second? first : second;
            }
            complex max(complex first, complex second)
            {
            return first>second? first : second;
            }
            date max(date first, date second)
            {
            return first>second? first : second;
            }
            這樣不但重復(fù)勞動(dòng),容易出錯(cuò),而且還帶來很大的維護(hù)和調(diào)試工作量。更糟的是,即使你在程序中不使用某個(gè)版本,其代碼仍然增加可執(zhí)行文件的大小,大多數(shù)編譯器將不會(huì)從可執(zhí)行文件中刪除未引用的函數(shù)。
            用普通函數(shù)來實(shí)現(xiàn)抽象操作會(huì)迫使你定義多個(gè)函數(shù)實(shí)例,從而招致不小的維護(hù)工作和調(diào)試開銷。解決辦法是使用函數(shù)模板代替普通函數(shù)。
            使用函數(shù)模板
            函數(shù)模板解決了上述所有的問題。類型無關(guān)并且只在需要時(shí)自動(dòng)實(shí)例化。本文下面將展示如何定義函數(shù)模板以便抽象通用操作,示范其使用方法并討論優(yōu)化技術(shù)。
            第一步:定義
            函數(shù)模板的聲明是在關(guān)鍵字 template 后跟隨一個(gè)或多個(gè)模板在尖括弧內(nèi)的參數(shù)和原型。與普通函數(shù)相對(duì),它通常是在一個(gè)轉(zhuǎn)換單元里聲明,而在另一個(gè)單元中定義,你可以在某個(gè)頭文件中定義模板。例如:
            // file max.h
            #ifndef MAX_INCLUDED
            #define MAX_INCLUDED
            template <class T> T max(T t1, T t2)
            {
            return (t1 > t2) ? t1 : t2;
            }
            #endif