C C 自學旅程 3 函式與預處理

2022-09-14 01:45:08 字數 1638 閱讀 4002

c++當然也是有函式的,而且跟c基本一致,但增加了很多新的特性。關於函式的定義、宣告、呼叫等跟c一致的內容我就不說了,下面只記載一下學到的新東西。

一、函式過載

簡單的說,就是函式名相同、函式引數表不同(引數型別或者個數不同)的幾個函式構成過載,系統可根據引數自動判定呼叫哪個函式。如:

int max(int a, int b)

double max(double a, double b, double c)

......

但注意,函式型別並不是決定函式過載是否正確的條件,也就是說參數列相同,函式名相同,只有函式型別不同,是不能正確構成過載的,如下面就是錯誤的:

int max(int, int)

double max(int, int)

系統無法知道到底呼叫哪乙個。

所以,函式過載:

1、函式名相同;2、形參個數或形參型別至少有乙個不相同。

二、帶預設引數的函式

int add(int a=10, int b=10, int c=10)

這樣,如果呼叫時是:add(),得出的結果就是30,若是add(2),那麼得出結果是22,以此類推……

只是要注意的是,預設形參只能放在靠右,如以下幾種是錯誤的:

int add(int a=1, int b=2, int c);

int add(int a=1; int b, int c=3);

......

另外值得一提的是,帶預設引數的函式和函式過載不要一起用,容易搞混。

三、內聯函式

inline 函式型別 函式名(形參列表)  用這種方法來減少頻繁呼叫函式的開銷。

要求:不能包括複雜的控制語句,如迴圈語句和switch語句;不能包括遞迴呼叫語句;不能有太多的函式體語句。

不滿足要求的會按照一般函式呼叫執行。

四、巢狀呼叫和遞迴呼叫

舊東西,多做做題可能會理解得好一點。

五、預處理

預處理包括:巨集定義、檔案包含。需要講的有以下兩點:

1、檔案包含中,< > 和 " "的區別:

< >,系統會去存放c++的系統目錄中去尋找,沒有找到就會報錯,適合系統提供的庫;" "中可以寫絕對路徑,如果沒有寫絕對路徑,系統會先去當前目錄找,如果沒有找到則去系統目錄,還沒有找到就報錯,適合自己寫的標頭檔案。

2、條件編譯

滿足條件編譯部分,主要使用於標頭檔案中避免因標頭檔案的多次引用而造成對變數的重複定義。主要有以下幾種形式:

#ifdef 識別符號

程式段1

#else

程式段2

#endif

前面#define了識別符號則編譯程式段1,否則編譯2。

#ifndef 識別符號

程式段1

#else

程式段2

#endif

與上一種相反。

#if 表示式

程式段1

#else

程式段2

#endif

如字面。

使用條件編譯可以使目標程式變小,執行時間變短。條件預編譯命令問題或演算法的解決方案增多,有助於選擇合適的解決方案。

C C 自學旅程 8 建構函式和析構函式

新引入了類這個概念,你別說突然之間各種概念就多起來麻煩起來了。今天來說說建構函式和析構函式。一 建構函式和拷貝建構函式 1.建構函式 簡單的說,建構函式就是給類成員初始化的函式。那怎麼使用呢?我們直接上 1 建構函式 2 include3 using namespace std 4class dat...

C語言之主函式與預處理

1.主函式 注意 main函式執行時,可以在命令列後加上引數 例題 用main函式實現對輸入的數排序 引申 atoi 函式 把數值型字串轉換成整數 面試題 問主函式既然不會被其它函式呼叫,為什麼要返回1?int main 答 mian中,c標準認為0表示成功,返回非零值表示主函式執行過程中的異常情況...

資料探勘概念與技術 學習筆記3 資料預處理

有大量的資料預處理技術 資料清理可以用來清除資料中的雜訊,糾正不一致。資料整合由多個資料來源合併成乙個一致的資料儲存,如資料倉儲。資料歸約可以通過如聚集刪除冗餘特徵或聚類來降低資料規模。資料變換可以用來把資料壓縮到較小區間。資料清理 通過填寫缺失的值,光滑雜訊資料,識別或刪除離群點,解決不一致性來清...