C 的探索路19 泛型程式設計與模板之練習題

2021-08-14 10:06:22 字數 1244 閱讀 7003

泛型程式設計的新知識點不多,主要強調的是乙個型別的概念;選幾道練習題來做做。

templatet max(t a, t b) 

double max(double a, double b)

int main()

這個考的就是型別匹配的問題,程式定義了兩個max函式,其中乙個為函式模板t max(t a,t b);另外乙個為double型別的函式max, double max(double a, double b)。

主函式內部依次呼叫了兩次max,乙個是max(1.2,3.4)另外乙個是呼叫了整形變數的max。

依據匹配規則:首先呼叫引數相同的普通函式,然後呼叫引數相同的模板函式規則,輸出順序應當為

my max

template max

template<____>

class myclass

void show()

};int main()

程式中定義了乙個myclass類,myclass類內部包含乙個t型別的成員變數,乙個建構函式,乙個show函式。由於沒有第二個型別,所以第乙個橫線應當為class t

主程式中應當想實現"this"的列印操作,由於是字串,所以可以寫成char*;如果標頭檔案定義了string標頭檔案,則還可以寫作string。

輸出結果為this。

請填空。注意不允許使用任何常量!

templateclass myclass 

nsize = n;

} ~myclass()

void show()

};int main()

程式中定義了乙個模板類,myclass

myclass中包含兩個成員變數,乙個未知,乙個nsize表明尺寸。

定義了乙個包含兩個引數的有參建構函式myclass(__,int n)以及乙個析構函式~myclass()

由於析構函式直接deletep;巧婦難為無公尺之炊,裡面肯定要有p指標才能delete掉,再結合建構函式的p=new t[n],第乙個空可天 t*p;

show函式波瀾不驚,進入主程式部分。

主程式首先定義了乙個szname字串指標,並賦值"tomhanks",然後通過myclassobj(__);實現對obj物件內部的賦值。

回顧第二個空,內部有陣列a[i],因此參數列內部需要個a,填入 t*a

第三個空則填入*szname,8

即可得到tom hanks的結果

C 的探索路17 泛型程式設計與模板之基本形式

按照書中的順序應當是輸入輸出流以及檔案操作兩部分的內容,相對來說,這兩部分對我目前用途不是太大,而泛型程式設計以及後續的stl部分內容有著更高的價值,所以先跳過i o流以及檔案操作,先進行模板方面的學習與總結,後續再對剩下的這些內容進行整理。整體學習結束以後將進行一星期左右的c 習題課練習,下一步進...

C 回顧之模板與泛型程式設計

oop能處理型別在程式執行之前都未知的情況 而在泛型程式設計中,在編譯時就能獲知型別了。編譯器會根據型別生成相應的模板例項。unsigned不加型別名時,預設表示無符號整型。非型別模板引數 函式模板和類模板成員函式的定義通常放在標頭檔案中。乙個類模板的成員函式只有當程式用到它時才進行例項化。在乙個類...

C 模板與泛型程式設計

1 物件導向程式設計總是以顯式介面和執行時多型解決問題。模板及泛型世界不同,在此世界中顯式介面和執行時多型仍然存在,但重要性降低,反倒是隱式介面和編譯器多型移到前頭。執行時多型和編譯時多型 前者表示哪乙個虛函式該被繫結,後者表示哪乙個過載函式該被呼叫。顯式介面由函式的簽名式 函式名稱 引數型別 返回...