C template 學習筆記(第二章)

2022-02-08 09:56:08 字數 1738 閱讀 6262

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 t 

const& 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物件。如下 ...