計(jì)算機(jī)等級(jí)考試二級(jí)C++各章內(nèi)容摘要9
時(shí)間:2008-10-06 05:34:00 來(lái)源:無(wú)憂(yōu)考網(wǎng) [字體:小 中 大]
第9章 模板
【考點(diǎn)一】 函數(shù)模板
1.函數(shù)模板的概念、定義與應(yīng)用函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼形式相同,只是所針對(duì)的數(shù)據(jù)類(lèi)型不同。對(duì)于函數(shù)模板,數(shù)據(jù)類(lèi)型本身成了它的參數(shù),因而是一種參數(shù)化類(lèi)型的函數(shù)。聲明一個(gè)函數(shù)模板的格式是:template模板形參表聲明函數(shù)聲明
其中的模板形參表聲明是由一個(gè)或多個(gè)模板形參組成(如果是多個(gè),需要用逗號(hào)隔開(kāi))。每個(gè)模板形參具有下面幾種形式:(1)typename參數(shù)名(2)class參數(shù)名(3)類(lèi)型修飾參數(shù)名
這里的參數(shù)名可以是任意的標(biāo)識(shí)符。在這三種形式中,前兩種是等價(jià)的:在聲明模板參數(shù)時(shí),關(guān)鍵字typename與class可以互換。用typename或class聲明的參數(shù)稱(chēng)為虛擬類(lèi)型參數(shù);而用類(lèi)型修飾聲明的參數(shù)則挑為常規(guī)參數(shù),在形式上與普通的函數(shù)參數(shù)聲明相同。格式中的函數(shù)聲明與一般函數(shù)的聲明類(lèi)似,只是某些類(lèi)型修飾符被虛擬類(lèi)型參數(shù)所替代。
2.模板實(shí)參的省略在調(diào)用一個(gè)模板函數(shù)時(shí),編譯系統(tǒng)需要足夠的信息來(lái)判別每個(gè)虛擬類(lèi)型參數(shù)所對(duì)應(yīng)的實(shí)際類(lèi)型,可以從兩個(gè)不同的渠道獲得這樣的信息:從模板實(shí)參表(用和括起來(lái)的參數(shù)表)或從模板函數(shù)實(shí)參表(用(和)括起來(lái)的參數(shù)表),模板實(shí)參的信息優(yōu)先于函數(shù)實(shí)參的信息。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛擬類(lèi)型參數(shù)所對(duì)應(yīng)的實(shí)際參數(shù),而且它們又正好是參數(shù)表中最后的若干參數(shù),則模板實(shí)參表中的那幾個(gè)參數(shù)可以省略。如果模板實(shí)參表中的實(shí)參都被省略了,則連空表也可以不要。因此,若x和y都是unsigned型,則addTounsigned(x,y,9)、addT (x、y、9)和addTo(x,y,9)三者是等價(jià)的。反之,對(duì)于某個(gè)模板實(shí)參,如果從模板函數(shù)的實(shí)參表中無(wú)法獲得同樣的信息,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有其他不能省略的實(shí)參,則其自身還是不能省略。下面列舉幾種模板實(shí)參不能省略的情況。(1)從模板函數(shù)實(shí)參表獲得的信息矛盾。(2)需要獲得特定類(lèi)型的返回值,而不管參數(shù)的類(lèi)型如何。(3)虛擬類(lèi)型參數(shù)沒(méi)有出現(xiàn)在模板函數(shù)的形參表中。(4)函數(shù)模板含有常規(guī)形參。
3.函數(shù)模板的定制對(duì)不同的數(shù)據(jù)類(lèi)型在處理形式上的統(tǒng)一性是建立模板的基礎(chǔ)。但是,這種統(tǒng)一性是相對(duì)的,個(gè)別數(shù)據(jù)類(lèi)型有可能比較特殊,在處理形式上與大多數(shù)數(shù)據(jù)類(lèi)型不一致。針對(duì)這樣的特殊情況,可以通過(guò)重載模板函數(shù)進(jìn)行定制。這樣把重載的模板稱(chēng)為補(bǔ)充模板,相應(yīng)地,原模板則稱(chēng)為主模板。
【考點(diǎn)二】
類(lèi)模板
1.類(lèi)模板的概念、定義與應(yīng)用類(lèi)模板就是一系列相關(guān)類(lèi)的模型或樣板,這些類(lèi)的成員組成相同,成員函數(shù)的源代碼形式相同,所不同的只是所針對(duì)的類(lèi)型(成員的類(lèi)型以及成員函數(shù)的參數(shù)和返回值的類(lèi)型)。對(duì)于類(lèi)模板,數(shù)據(jù)類(lèi)型本身成了它的參數(shù),因而是一種參數(shù)化類(lèi)型的類(lèi),是類(lèi)的生成器。類(lèi)模板中聲明的類(lèi)稱(chēng)為模板類(lèi)。聲明一個(gè)類(lèi)模板的格式是:template模板形參表聲明類(lèi)聲明模板形參表聲明是由一個(gè)或多個(gè)模板形參組成;與一般的類(lèi)聲明的不同之處在于,這里的類(lèi)聲明要用模板形參表聲明中聲明的虛擬類(lèi)型參數(shù)來(lái)修飾它的某些成員,使模板類(lèi)獨(dú)立于任何具體的數(shù)據(jù)類(lèi)型。在模板外對(duì)成員函數(shù)的聲明格式是:template模板形參表聲明返回類(lèi)型類(lèi)名模板形參表::函數(shù)名(函數(shù)形參表)函數(shù)體其中模板形參表就是由模板形參表聲明中聲明的參數(shù)名組成的序列。應(yīng)注意,類(lèi)模板的成員函數(shù)都是模板函數(shù),因此在模板外聲明成員函數(shù)的格式與聲明普通模板函數(shù)十分相似。用類(lèi)模板定義對(duì)象的格式是:類(lèi)名模板實(shí)參表對(duì)象名;或類(lèi)名模板實(shí)參表對(duì)象名(構(gòu)造函數(shù)實(shí)參表);在定義對(duì)象的過(guò)程中,編譯系統(tǒng)會(huì)自動(dòng)地根據(jù)需要生成相應(yīng)的類(lèi)定義,這種依據(jù)類(lèi)模板生成類(lèi)定義的過(guò)程稱(chēng)為類(lèi)模板的實(shí)例化。類(lèi)模板實(shí)例所生成的每一個(gè)類(lèi)定義就是相應(yīng)類(lèi)模板的一個(gè)實(shí)例。在用類(lèi)模板定義對(duì)象時(shí),由于沒(méi)有像函數(shù)實(shí)參表這樣的額外信息渠道,因此無(wú)法按函數(shù)模板的方式省略模板實(shí)參。但是,可以為類(lèi)模板的參數(shù)設(shè)置默認(rèn)值。具體地說(shuō),在定義類(lèi)模板時(shí),可以為模板形參表聲明的最后若干個(gè)參數(shù)設(shè)置默認(rèn)值;而這些有默認(rèn)值的參數(shù)中,最后的若干個(gè)對(duì)應(yīng)實(shí)參可以在定義對(duì)象時(shí)省略。
3類(lèi)模板的派生與繼承一談到繼承總涉及到兩個(gè)類(lèi):基類(lèi)和派生類(lèi),它們中任何一個(gè)都有可能是模板類(lèi),或模板類(lèi)的實(shí)例。下面列出常見(jiàn)的幾種情況。(1)普通類(lèi)繼承類(lèi)模板的一個(gè)實(shí)例?梢酝ㄟ^(guò)繼承類(lèi)模板的一個(gè)實(shí)例來(lái)聲明一個(gè)類(lèi)。(2)模板類(lèi)繼承普通類(lèi)。在聲明一個(gè)類(lèi)模板時(shí),應(yīng)盡可能將類(lèi)模板中與虛擬類(lèi)型參數(shù)無(wú)關(guān)的成員剝離出來(lái),構(gòu)成一個(gè)普通類(lèi),作為類(lèi)模板的基類(lèi)。因此,類(lèi)模板繼承普通類(lèi)的情況是十分常見(jiàn)的。(3)模板類(lèi)繼承模板類(lèi)?梢酝ㄟ^(guò)繼承一個(gè)模板類(lèi)來(lái)聲明一個(gè)類(lèi)模板。(4)模板類(lèi)繼承模板參數(shù)給出的基類(lèi)。模板的派生甚至可以繼承一個(gè)未知的基類(lèi)。也就是說(shuō),繼承哪個(gè)基類(lèi)由模板參數(shù)決定。
【考點(diǎn)一】 函數(shù)模板
1.函數(shù)模板的概念、定義與應(yīng)用函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼形式相同,只是所針對(duì)的數(shù)據(jù)類(lèi)型不同。對(duì)于函數(shù)模板,數(shù)據(jù)類(lèi)型本身成了它的參數(shù),因而是一種參數(shù)化類(lèi)型的函數(shù)。聲明一個(gè)函數(shù)模板的格式是:template模板形參表聲明函數(shù)聲明
其中的模板形參表聲明是由一個(gè)或多個(gè)模板形參組成(如果是多個(gè),需要用逗號(hào)隔開(kāi))。每個(gè)模板形參具有下面幾種形式:(1)typename參數(shù)名(2)class參數(shù)名(3)類(lèi)型修飾參數(shù)名
這里的參數(shù)名可以是任意的標(biāo)識(shí)符。在這三種形式中,前兩種是等價(jià)的:在聲明模板參數(shù)時(shí),關(guān)鍵字typename與class可以互換。用typename或class聲明的參數(shù)稱(chēng)為虛擬類(lèi)型參數(shù);而用類(lèi)型修飾聲明的參數(shù)則挑為常規(guī)參數(shù),在形式上與普通的函數(shù)參數(shù)聲明相同。格式中的函數(shù)聲明與一般函數(shù)的聲明類(lèi)似,只是某些類(lèi)型修飾符被虛擬類(lèi)型參數(shù)所替代。
2.模板實(shí)參的省略在調(diào)用一個(gè)模板函數(shù)時(shí),編譯系統(tǒng)需要足夠的信息來(lái)判別每個(gè)虛擬類(lèi)型參數(shù)所對(duì)應(yīng)的實(shí)際類(lèi)型,可以從兩個(gè)不同的渠道獲得這樣的信息:從模板實(shí)參表(用和括起來(lái)的參數(shù)表)或從模板函數(shù)實(shí)參表(用(和)括起來(lái)的參數(shù)表),模板實(shí)參的信息優(yōu)先于函數(shù)實(shí)參的信息。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛擬類(lèi)型參數(shù)所對(duì)應(yīng)的實(shí)際參數(shù),而且它們又正好是參數(shù)表中最后的若干參數(shù),則模板實(shí)參表中的那幾個(gè)參數(shù)可以省略。如果模板實(shí)參表中的實(shí)參都被省略了,則連空表也可以不要。因此,若x和y都是unsigned型,則addTounsigned(x,y,9)、addT (x、y、9)和addTo(x,y,9)三者是等價(jià)的。反之,對(duì)于某個(gè)模板實(shí)參,如果從模板函數(shù)的實(shí)參表中無(wú)法獲得同樣的信息,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有其他不能省略的實(shí)參,則其自身還是不能省略。下面列舉幾種模板實(shí)參不能省略的情況。(1)從模板函數(shù)實(shí)參表獲得的信息矛盾。(2)需要獲得特定類(lèi)型的返回值,而不管參數(shù)的類(lèi)型如何。(3)虛擬類(lèi)型參數(shù)沒(méi)有出現(xiàn)在模板函數(shù)的形參表中。(4)函數(shù)模板含有常規(guī)形參。
3.函數(shù)模板的定制對(duì)不同的數(shù)據(jù)類(lèi)型在處理形式上的統(tǒng)一性是建立模板的基礎(chǔ)。但是,這種統(tǒng)一性是相對(duì)的,個(gè)別數(shù)據(jù)類(lèi)型有可能比較特殊,在處理形式上與大多數(shù)數(shù)據(jù)類(lèi)型不一致。針對(duì)這樣的特殊情況,可以通過(guò)重載模板函數(shù)進(jìn)行定制。這樣把重載的模板稱(chēng)為補(bǔ)充模板,相應(yīng)地,原模板則稱(chēng)為主模板。
【考點(diǎn)二】
類(lèi)模板
1.類(lèi)模板的概念、定義與應(yīng)用類(lèi)模板就是一系列相關(guān)類(lèi)的模型或樣板,這些類(lèi)的成員組成相同,成員函數(shù)的源代碼形式相同,所不同的只是所針對(duì)的類(lèi)型(成員的類(lèi)型以及成員函數(shù)的參數(shù)和返回值的類(lèi)型)。對(duì)于類(lèi)模板,數(shù)據(jù)類(lèi)型本身成了它的參數(shù),因而是一種參數(shù)化類(lèi)型的類(lèi),是類(lèi)的生成器。類(lèi)模板中聲明的類(lèi)稱(chēng)為模板類(lèi)。聲明一個(gè)類(lèi)模板的格式是:template模板形參表聲明類(lèi)聲明模板形參表聲明是由一個(gè)或多個(gè)模板形參組成;與一般的類(lèi)聲明的不同之處在于,這里的類(lèi)聲明要用模板形參表聲明中聲明的虛擬類(lèi)型參數(shù)來(lái)修飾它的某些成員,使模板類(lèi)獨(dú)立于任何具體的數(shù)據(jù)類(lèi)型。在模板外對(duì)成員函數(shù)的聲明格式是:template模板形參表聲明返回類(lèi)型類(lèi)名模板形參表::函數(shù)名(函數(shù)形參表)函數(shù)體其中模板形參表就是由模板形參表聲明中聲明的參數(shù)名組成的序列。應(yīng)注意,類(lèi)模板的成員函數(shù)都是模板函數(shù),因此在模板外聲明成員函數(shù)的格式與聲明普通模板函數(shù)十分相似。用類(lèi)模板定義對(duì)象的格式是:類(lèi)名模板實(shí)參表對(duì)象名;或類(lèi)名模板實(shí)參表對(duì)象名(構(gòu)造函數(shù)實(shí)參表);在定義對(duì)象的過(guò)程中,編譯系統(tǒng)會(huì)自動(dòng)地根據(jù)需要生成相應(yīng)的類(lèi)定義,這種依據(jù)類(lèi)模板生成類(lèi)定義的過(guò)程稱(chēng)為類(lèi)模板的實(shí)例化。類(lèi)模板實(shí)例所生成的每一個(gè)類(lèi)定義就是相應(yīng)類(lèi)模板的一個(gè)實(shí)例。在用類(lèi)模板定義對(duì)象時(shí),由于沒(méi)有像函數(shù)實(shí)參表這樣的額外信息渠道,因此無(wú)法按函數(shù)模板的方式省略模板實(shí)參。但是,可以為類(lèi)模板的參數(shù)設(shè)置默認(rèn)值。具體地說(shuō),在定義類(lèi)模板時(shí),可以為模板形參表聲明的最后若干個(gè)參數(shù)設(shè)置默認(rèn)值;而這些有默認(rèn)值的參數(shù)中,最后的若干個(gè)對(duì)應(yīng)實(shí)參可以在定義對(duì)象時(shí)省略。
3類(lèi)模板的派生與繼承一談到繼承總涉及到兩個(gè)類(lèi):基類(lèi)和派生類(lèi),它們中任何一個(gè)都有可能是模板類(lèi),或模板類(lèi)的實(shí)例。下面列出常見(jiàn)的幾種情況。(1)普通類(lèi)繼承類(lèi)模板的一個(gè)實(shí)例?梢酝ㄟ^(guò)繼承類(lèi)模板的一個(gè)實(shí)例來(lái)聲明一個(gè)類(lèi)。(2)模板類(lèi)繼承普通類(lèi)。在聲明一個(gè)類(lèi)模板時(shí),應(yīng)盡可能將類(lèi)模板中與虛擬類(lèi)型參數(shù)無(wú)關(guān)的成員剝離出來(lái),構(gòu)成一個(gè)普通類(lèi),作為類(lèi)模板的基類(lèi)。因此,類(lèi)模板繼承普通類(lèi)的情況是十分常見(jiàn)的。(3)模板類(lèi)繼承模板類(lèi)?梢酝ㄟ^(guò)繼承一個(gè)模板類(lèi)來(lái)聲明一個(gè)類(lèi)模板。(4)模板類(lèi)繼承模板參數(shù)給出的基類(lèi)。模板的派生甚至可以繼承一個(gè)未知的基類(lèi)。也就是說(shuō),繼承哪個(gè)基類(lèi)由模板參數(shù)決定。
- 2009年9月全國(guó)計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師考試真題及答案
- 2009年3月全國(guó)計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師考試真題及答案
- 2008年9月全國(guó)計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師考試真題及答案
- 2008年4月全國(guó)計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師考試真題及答案
- 2011年3月全國(guó)計(jì)算機(jī)二級(jí)Java考試真題及答案
- 2010年9月全國(guó)計(jì)算機(jī)二級(jí)Java考試真題及答案
- 查看計(jì)算機(jī)等級(jí)考試全部真題>>
- 2025年3月安徽計(jì)算機(jī)等級(jí)考試時(shí)間:3月29日-31日
- 2025年3月安徽計(jì)算機(jī)等級(jí)考試準(zhǔn)考證打印時(shí)間:3月24日9:00起
- 2025上半年安徽計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間及報(bào)名入口:3月3日-9日
- 2025年3月安徽全國(guó)計(jì)算機(jī)等級(jí)考試報(bào)名工作的通知
- 2025上半年上海計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間及報(bào)名入口:3月4日-7日
- 2025年3月上海全國(guó)計(jì)算機(jī)等級(jí)考試網(wǎng)上報(bào)名通知
- 查看計(jì)算機(jī)等級(jí)考試全部文檔 >>
- 2024年9月上海計(jì)算機(jī)一級(jí)成績(jī)查詢(xún)時(shí)間及查分入口
- 2024年9月全國(guó)計(jì)算機(jī)一級(jí)成績(jī)查詢(xún)時(shí)間及查分入口
- 2024年9月全國(guó)計(jì)算機(jī)一級(jí)考試成績(jī)查詢(xún)?nèi)肟冢ㄒ验_(kāi)
- 2024年9月浙江省全國(guó)計(jì)算機(jī)等級(jí)考試(NCRE)
- 2024年9月浙江計(jì)算機(jī)二級(jí)考試準(zhǔn)考證打印入口(9
- 2024年9月江蘇計(jì)算機(jī)一級(jí)成績(jī)查詢(xún)時(shí)間及查分入口
- 2024年9月江蘇計(jì)算機(jī)等級(jí)考試成績(jī)查詢(xún)時(shí)間及查分
- 2024年9月浙江計(jì)算機(jī)二級(jí)成績(jī)查詢(xún)時(shí)間及查分入口