一、函式模板
過載:引數個數不同,型別不同可以構成過載
將資料型別當引數進行傳遞(將資料型別和演算法進行分離)
//函式模板:用template去宣告模板、-----模板宣告只對dang當前函式有效
1.myswap(a,b) //隱式呼叫、不指名型別 讓編譯器自動推導
cout ----標準輸出流變數
2.函式模板可以隱式呼叫,但不支援隱式的型別轉換
強制轉換: int a = 10;int b = 20; char c = 'a'
print(a,c)
3.函式模板和普通函式都可以呼叫的情況下,優先diao呼叫函式模板--可以通過< >強制呼叫模板函式,內部型別可寫可不寫。
4.模板機制實現,兩次編譯
1.對模板自身編譯
2.在呼叫的位置對具體型別進行編譯
二、類模板
template
class testa
public:
testa(t a)
this->a = a;
void print()
cout << a t a
棧------區域性變數
堆------自己申請
資料區---靜態、區域性變數
**區---執行**/常量
1.類模板的派生和繼承
2.類模板的使用
類成員的函式實現:(1)在內部 (2)在外部
類模板成員函式可以在內部實現,包括友元函式都可以在內部實現
!!!注意友元函式即使在類的內部實現,它也是乙個友元函式,不是類的成員函式
《運算子過載會使用友元函式打破封裝》
《類裡如果有友元函式一般放在類的開頭》
3.在類的外部實現類模板
*類模板成員函式如果在lei類的外部進行實現,必須全部寫成函式模板
*類的後面要跟模板引數列表
*類的內部可加可不加,但是在外部一定要加
*運算子過載< >作為友元函式使用的時候在進行友元宣告的時候在函式名和
間加
C 之類和物件的知識
物件導向的基本思想 以誰做什麼來表達程式的邏輯,以物件為中心,物件的所有行為都通過呼叫自己的函式來完成。體現在 層面就是資料成員呼叫自己的函式以及通過函式來對自己進行操作.封裝的好處 1.可以在成員函式中做一些必要的限制 2.有時候確實不允許使用者改變資料成員 對資料的封裝一般用set來對函式賦值 ...
C 基礎知識之類繼承
using system using system.collections.generic using system.linq using system.text namespace classinherit set pubic修飾,它的子類繼承得到 public void shout class ...
C 樹的相關知識
有4種遍歷二叉樹的常用方法 前序遍歷void preorder binarytreenode t 遞迴版 迭代使用棧來實現前序遍歷 void preorderiter treenode root 迭代版 stack stack stack.push root while stack.empty if...