一:過載1.函式過載:(1)不同引數型別,不同引數個數可以過載 例如下面的不能過載: void fun(int); 和 void fun(int &) (2)不能用函式返回值過載
2.運算子過載:(1)編譯器根據參加運算的運算元的型別來識別不同的運算; (2)過載運算子就是編寫乙個運算子函式,該函式原形是: 《返回值的資料型別》 operate《要過載的運算子》(《形參表》) (3)可以用普通函式或成員函式的形式過載操作符 (4)當利用非成員函式過載雙目運算子時,第乙個形參表示左邊的運算元,第二個形參表示右邊的運算元 (5)當用成員函式過載雙目運算子時,運算子左邊的操作符就是物件本身,不能在將它作為運算子函式的引數,這時運算子函式只需要乙個引數; (6)使用者不能定義新的運算子,只能對現有的運算子過載,過載後保持原來的優先順序和結合性 (7)以下的運算子不能過載:.(成員運算子),::,?:,.*
二:模板(為了避免**重複編寫)1.函式模板:即將引數和返回值的資料型別引數化 格式例如: template
t1 myfun(t2 a, t3 b) 使用方法: 例如 z=myfun(x,y); 注:上面引數的個數及在函式模板中的位置都是任意的; t1等引數型別可以用來在函式裡面宣告變數; 函式模板只能用於定義非成員函式;2.類模板:是一種不確定類的某些資料成員或成員函式引數及返回值的類 格式例如: template class myclass 在模板類外部定義模板類的成員函式的格式: template t1 myclass::myfun(t2 a, int b) 類模板通過在使用模板類宣告物件時給出的實際型別來確定型別引數的 例如: myclas**yobj();
注:類模板的型別參數列可以含有確定型別的引數,如上面的最後乙個引數,這時宣告時要代入具體值??
C 模板過載
產生背景 需要多個對不同型別使用同一種演算法函式時可以使用模板,但是並非所有的型別都使用同一種演算法,為了解決這個問題,產生了模板過載。tips 1.如同函式的過載一樣,模板過載函式的特徵標必須不同 2.並非所有的模板引數都必須是模板引數型別 顯示具體化 explicit specializatio...
C 模板基礎
在一般情況下,我們進行程式設計的時候就會確定參與運算所有物件的型別,以方便編譯器執行時候及時的分配記憶體,通俗的講也就是讓編譯器明白你要幹什麼,但是很多的時候會有很多尷尬的瞬間,比如舉乙個簡單的例子,現在如果我要對乙個整形的陣列進行排序,我們都知道函式的作用是包裝乙個 塊,方便我們重複呼叫,從而降低...
C 基礎 模板
特化和過載的區別 模板 template 指c 程式設計設計語言中採用型別作為引數的程式設計,支援通用程式設計。c 的標準庫提供許多有用的函式大多結合了模板的觀念,如stl以及io stream。模板是c 支援引數化多型的工具,使用模板可以使使用者為類或者函式宣告一種一般模式,使得類中的某些資料成員...