C 自我精講 基礎系列三 過載

2022-07-08 20:06:06 字數 1365 閱讀 5941

【c++自我精講】基礎系列三 過載

0 前言

分二部分:函式過載,操作符過載。

1 函式過載

函式過載:指在同一名字空間中,函式名稱相同,引數型別、順序或數量不同的一類函式,同一函式名的函式能完成不同功能。

//

非函式過載,只是返回值不一樣

void fun(int

i);int fun(int

i);//

非函式過載,不在同一名字空間

namespacea;

namespaceb;

//函式過載

int add(int i, int

j);

float add(float i, float j);

重新命名機制:函式過載的名稱都是一模一樣的,c++編譯器就是通過重新命名機制來區別這些同名函式的(不同的c++編譯器,重新命名機制可能不一樣)。

//

重新命名機制

void fun(int i, double j); //

c++編譯器把函式名fun其實重新命名為_fun_int_double

void fun(double i, int j); //

c++編譯器把函式名fun其實重新命名為_fun_double_int

c++呼叫c 函式:c++提供了乙個c 連線交換指定符號extern「c」來解決這個問題。

void fun(int i, ini j); c 編譯器編譯後的名字為_fun。

void fun(int i, int j); c++編譯器編譯後的名字為_fun_int_int。

c 編譯器和c++編譯器產生的名字不同,所以c++不能直接呼叫c 函式。用extern「c」解決。

extern"c

"

2 操作符過載

操作符過載:指用關鍵字operator加運算子表示的函式。可以把其理解為特殊形式的函式,運算子本身是函式名。

int add(int i, int j);       //

普通函式

intoperator+(int i, int j); //

+運算子函式

//用法

int k = add(10, 20

);int m = 10 + 20;

操作符過載規則:

ps:後面講到類時再結合例子講解下操作符過載為成員函式。

C 自我精講 基礎系列四 static

變數的儲存型別 儲存型別按變數的生存期劃分,分動態儲存方式和靜態儲存方式。1 動態儲存方式的變數,生存期為變數所在的作用域。即程式執行到此變數時才為其分配儲存空間,作用域結束時,會自動收回為其分配的儲存空間。2 靜態儲存方式的變數,生存期為整個程式執行的過程。即程式開始時就為其分配儲存空間,程式結束...

C 自我精講 基礎系列六 PIMPL模式

c 自我精講 基礎系列六 pimpl模式 0 前言 很實用的一種基礎模式。1 pimpl解釋 pimpl private implementation 或 pointer to implementation 是通過乙個私有的成員指標,將指標所指向的類的內部實現資料進行隱藏。2 pimpl優點 舉例 ...

c 基礎複習2 過載

運算子過載 實質是函式過載,在實現過程中,首先把指定的運算表示式轉化為對運算子函式的呼叫,運算物件轉化為運算子函式的實參。然後根據實參的型別來確定需要呼叫的函式。特點 這個過程是在編譯過程中完成的。過載之後運算子的優先順序和結合性都不會改變。過載的功能應當與原有功能相類似。當運算子過載為類的成員函式...