第七章 習題
一、名詞解釋
函式模板:一個帶類屬引數的函式;
類模板:一個帶類屬引數的類;
模板函式:通過引數例項化可以再構造出具體的函式;
模板類:通過引數例項化可以再構造出具體的類;
二、填空題
(1)C++支援兩種模板,一種是 函式模板 ,另一種是 類模板 。
(2)關鍵字 template 是定義模板的關鍵字。
(3)<模板引數表>中包含一個或多個用逗號分開的模板引數項,每項由保留字 class 或者 typename 開始。
(4)過載函式模板便於定義 類屬引數 或者函式引數的型別、個數不相同所進行的 類似 操作。
(5)函式模板例項化時, 沒有
(6)STL 提供的容器是常用資料結構 的 類模板 。
(7)STL 容器類庫中包含7種基本容器。它們可以分成兩個組: 順序容器 和 關聯容器 。
(8)STL 迭代器主要包括5中基本類別: 輸入迭代器 、輸出迭代器 、 前向迭代器 、雙向迭代器 和 隨機訪問迭代器 。
三、選擇題(至少選一個,可以多選)(1)關於函式模板,描述錯誤的是( A )
A.函式模板必須由程式設計師例項化為可執行的模板函式
B.函式模板的例項化由編輯器實現
C.一個類定義中,只要有一個函式模板,則這個類是類模板
D.類模板的成員雨數都是函式模板,類模板例項化後,成員函式也隨之例項化
(2)下列的模板說明中,正確的是( A )
A. template <typename T1,typename T2> B. template <class T1,T2>
C. template(classT1,classT2) D. template (typenameT1, T2)
(3)假設有函式模板定如下:
template Ctypename TS
Nax(T a.T b.T Sc)
{c=a+ b;}
下列選項正確的是( A B )
A. float x,y;float z; B. int x,y,z; C. int x,y;float z; D.flat x;double y,z;
Max(x,y,z); Max(x,y,z); Max(x,y,z); Max(x,y,z);
(4)建立類模板物件的例項化過程為( C )。
A.基類——派生類 B.建構函式——物件
C.模板類——物件 D.模板類——模板函式
(5)下面( A B D )是標準模板庫中的主要元件。
A.容器 B.迭代器 C.檔案 D.演算法
四、判斷題
(1)一個模板函式能夠被相同函式名的另外模板函式過載。 (對)
(2)作為模板型別引數的關鍵字class,特別含義是“任何使用者定義類的型別”。 (錯)
(3)在類模板的<模板引數表>中,必須至少有一個類引數。 (對)
(4)在類模板的<模板引數表>中,可以使用函式型別引數,該引數與普通函式引數的用法和功效完全相同。 (錯)
(5)迭代器就是我們平時所用的指標。 (錯)
五、程式設計題(1)用函式模板實現求整數實數平方根的程式。
(2)設計一個類模板,然後將該類模板例項化為整數型和字元觀類。利用類模板的成員函式為其資料成員賦值,並顯示所賦給的值。