模版的學習

2021-06-21 12:30:26 字數 875 閱讀 5285

【解決】模版類在外部定義成員是應該在前面加上 store::fun(), 如果只是加了store::fun() 就會丟擲這個異常。

【體會】有些細節是需要研究的,有些細節是不必探索的, 應為那些東西網上很容易可以找到。

【解決】: 呼叫時fun("hehe", 1); 因為"hehe"是const char【】型別, 所以t=const char , 陣列實現卻不能複製。

可以:  string("hehe")傳值, 也可以去掉函式模版中的&符合。

【體會】: c++模版部分要求本來就很高, 還是應該找本好書,堅持看下去,  相信一分耕耘一分收穫。

3、【問題】模板類中定義list::iterator iter在g++下不識別的解決辦法

【體會】typename list::iterator 是指定iteraor為型別名

【問題剖析】

template

void write(const c& container)

上面的**有多重意思

1、如果 c::const_iterator 不是乙個型別,如果 c 有乙個靜態資料成員碰巧就叫做 const_iterator

2、如果 x 碰巧是乙個全域性變數的名字,在這種情況下,上面的**就不是宣告區域性變數,而是成為 c::const_iterator 乘以 x!

3、nested dependent name(巢狀依賴名字)會導致解析困難

4、c++ 有一條規則解決這個歧義:如果解析器在乙個模板中遇到乙個巢狀依賴名字,它假定那個名字不是乙個 型別,除非你用其它方式告訴它。

解決辦法

list::iterator iter 改為

typename list::iterator iter 便是list::iterator 是一種型別

c 模版學習

1 模板的概念 我們已經學過過載 overloading 對過載函式而言,c 的檢查機制能通過函式引數的不同及所屬類的不同。正確的呼叫過載函式。例如,為求兩個數的最大值,我們定義max 函式需要對不同的資料型別分別定義不同過載 overload 版本。函式1.int max int x,int y ...

函式模版和模版函式,類模版和模版類的區別

什麼是函式模板和類模板 函式模板是一種抽象函式定義,它代表一類同構函式。通過使用者提供的具體引數,c 編譯器在編譯時刻能夠將函式模板例項化,根據同乙個模板建立出不同的具體函式,這些函式之間的不同之處主要在於函式內部一些資料型別的不同,而由模板建立的函式的使用方法與一般函式的使用方法相同。函式模板的定...

Django的模版引擎與模版使用

模版引擎是模版響應的後端。模版指的是html css,js等相關的檔案。模版引擎是將這些表示層檔案與資料相整合在一起,然後將整合後的資料給到響應型別判斷採用一次性響應還是流響應,確定響應型別後將模版加工後的資料反饋給使用者。django支援兩種模板引擎,django模版引擎和jinja2模版引擎。在...