1. 練習16.1
當我們呼叫template時,編譯器會根據函式實參的型別推斷模板實參,從而確定最匹配的繫結到模板引數t的 型別,之後編譯器用推斷出得模板引數來例項化乙個特定函式的版本,這個過程就叫做例項化。
2. 練習16.2
模板函式在.**件中定義
#ifndef template_compare_h
#define template_compare_h
templateint compare(const t &v1,const t &v2)
#endif template_compare_h
main函式裡呼叫
cout<<"result1 "<3. 練習16.3
main函式裡執行下述**,其中animal類是空類。
animal a,b;
cout<<"result3 "4. 練習16.4
template.h
#ifndef template_find_h
#define template_find_h
#include #include template bool tfind(const u &it1,const u &it2,const t &t)
return false;
}#endif template_find_h
main.cpp
//因為我用的是vs2010,還不支援c++11的容器直接初始化列表,所以用這種方法初始化
int a[5] = ;
vectorvec1(a,a+5);
string b[3] = ;
vectorvec2(b,b+3);
bool res1 = tfind(vec1.cbegin(),vec1.cend(),4);
cout<5. 練習16.5
template void print(const t &vec,size_t n)
template const t* tend(const t (&vec)[n])
template size_t tsize(const t (&vec)[n])
main.cpp
int a[5] = ;
cout<7. 練習16.8
並非所有的容器都定義了operate <,但c++標準庫的所有容器都定義了operate ==和!=。
1.練習16.9
類模版:用來生成類的藍圖,與函式模版不同的是,編譯器不能為類模版推斷模版引數型別,所以在實參列表中,類模版需要做的更多,類模版就是生成類的例項,函式模版就是用來生成函式的例項。
2.練習16.10
編譯器會重寫類模板,將模板引數t的每個例項替換為給定的模板實參(顯式)。
3.練習16.11
在list類內,使用模版名不需要再加引數列表,而listitem使用時必須加上<>模版引數列表
4.練習16.12
第7章 課後習題
函式模板 另一種是 類模板 是定義模板的關鍵字。或者typename 開始。或者函式引數的型別 個數不相同所進行的類似 操作。普通傳值引數的型別轉換機制。和關聯容器 三 選擇題 至少選乙個,可以多選 五 程式設計題 include include using namespace std templa...
第9章 課後習題
二 選擇題 至少選乙個,可以多選 1 處理異常用到3個保留字,除了try外,還有 ac a.catch b.class c.throw d.return 2 catch.般放在其他catch子句的後面,該子句的作用是 b a.拋擲異常 b.捕獲所有型別的異常 c.檢測並處理異常 d.有語法錯誤 3 ...
第4章 課後習題
4.1 105 4.2 a vec.begin vec.begin b vec.begin 1 vec.begin 1 4.3 我覺得可以接受 個人看法並非標準答案,僅作參考 這種缺陷只會求值順序對表示式的最後結果有影響的時候出現,而如果求值順序如果對最後結果有影響 那麼避免這種缺陷本身就是程式設計...