1. function templates
函式模版主要用來表示一系列的具有相似性質的函式,把這些不同函式間不同之處進行引數化。
模版一般形式:
1 template 2 inline t const& max (t const& a, t const&b)3
對於多個型別引數 在尖括號中逗號隔開,如:template
如果使用到的型別不支援模版中使用到的操作,則會編譯出錯, 如:
std::complex c1, c2; //此型別不支援小於判斷
...max (c1, c2);
//編譯期間會報錯
由於型別引數t是根據引數型別而確定的,不能進行型別轉換,因此對於一些特殊情況需要指定t的型別,如:
template inline tconst& max (t const& a, t const&b)
...max (
2, 3); //
t根據引數判斷為int型,一切正常
max (4, 3.4); //
t首先根據第乙個引數判斷為int型,第二個引數為double型,不是int型引數 編譯報錯
/**解決方法
*/max (static_case
4, 3.4); //
將引數轉換為double型
max (4, 3.4); //
直接指定 t 為double型
對於模版,也可以實現過載:
//無模版形式比較兩個int型數大小 1111
inline int
const& max (int
const& a, int
const&b)
//比較兩個值大小 2222
template inline t
const& max (t const& a, t const&b)
//比較三個值大小 3333
template inline t
const& max (t const& a, t const& b, t const&c)
...max (
1, 33, 99); //
三個引數,呼叫333
max (1.0, 3.3); //
呼叫222的 max形式
max ('
a', '
b'); //
呼叫222的 max形式
max (7, 42); //
優先呼叫非模版函式, 因此呼叫111
max<> (7, 42); //
呼叫222的 max形式
max (7, 42); //
直接呼叫222的 max形式
max ('
a', 4.2); //
將兩個引數轉換為int型後 呼叫111
對於max ('a', 4.2)呼叫,由於模版形式不支援型別轉換,因此只能強行把 『a' 和 4.2 轉換為 int 形式 在呼叫函式 111
最後一點,模版的所有過載形式必須定義在它被呼叫之前。
第二學習筆記
我是在大話資料結構學的,所以可能會和培訓的不太一樣 用例子解釋資料的基本概念 資料物件就像是人類這個群體 資料元素就是全部人類中的乙個人 資料項就是乙個人的姓名,生日,身高等等特點。所以,資料項就像是集合裡的元素一樣,是資料不可分割的最小單位 所以,其實這些概念就是包含與被包含的關係,也就是集合 資...
第二週學習筆記
從課堂上的內容大體可以歸為如上,概念模型因為在具體使用當中較少接觸故簡單介紹其優點。下面將用較大篇幅詳細討論e r模型的實際使用和visio表示的意義。首先,要明白圖表中不同方框代表什麼,方框代表實體,而橢圓框代表屬性,那麼什麼是實體什麼又是屬性呢,那讓我們用乙個簡單的關係圖表來了解一下。這是乙個典...
第二週 學習筆記
1.介紹 sqlconnection是ado.net中的連線類。使用sqlconnection 類可以連線到sql server資料庫。2.主要屬性 connectionstring 連線字串 3.建立sqlconnection物件 可以使用定義好的連線字串建立sqlconnection物件。如下 ...