兩個數相加的泛型:
c:#define sum(a,b)(a+b)
int main()
int a=10;
int b=20;
int rt=sum(a,b);
double rt2=sum(10.1,10.2);
巨集函式-->預編譯-->替換-->沒有型別檢查和安全檢查 不安全
void* sum(void* a,int alen,void*b,int blen);
void*泛型[) 半開半閉區間
void* 容易越界 (起始位置+長度) 確定區間大小
因為c語言中符號生成規則只和函式名有關_sum
c++符號生成和函式返回值+函式名+函式引數列表
c++:
?sum@@yahhh@z
?sum@@yannn@z
函式返回值不同就不能構成過載
函式過載:1.同名2.不同引數3.同一作用域
c++三大特徵:封裝,繼承,多型
多型:靜多型:函式過載,模板 (編譯階段確定函式呼叫)
動多型:繼承和虛函式 ( 執行確定函式呼叫)
同名函式的三種關係:
1.過載:重定義 編譯階段確定函式呼叫的過程
2.隱藏
3.覆蓋:重寫 派生類中同名同參的虛函式覆蓋了基類中同名同參的虛函式。(動多型)
C C 函式過載
把複雜的知識簡單化,就是我寫部落格的目的 seen 首先要教各位看官如何使用c 的這個特性,方法很簡單,就是寫兩個函式,裡面引數不同,然後c 這種語言編譯器就能夠自動的解析這兩個函式,然後進行輸出 我們來看乙個例子 include include using namespace std void p...
C C 函式過載
c 標準庫已經提供了交換兩個變數的值的函式,它的名字就是swap,位於algorithm標頭檔案中。引數列表不同包括引數的個數不同 型別不同或順序不同,僅僅引數名稱不同是不可以的。函式返回值也不能作為過載的依據。僅僅返回型別不同不足以成為函式的過載。c 在編譯時會根據引數列表對函式進行重新命名,例如...
函式之過載函式
由於過載函式都是同名的,編譯器如何解析過載函式呢?發現函式 void print int i 編譯之後為 注意它的函式簽名變為 z5printi 利用反彙編技術,發現函式void print int i 編譯之後,它的函式簽名為 z5printi void print string str 編譯之後...