一、函式過載:
在同乙個作用域中,如果有多個函式的名字相同,同乙個作用域,但是形參列表不同(引數型別不同或引數個數不同),返回值型別可同也可不同,我們稱之為過載函式。過載的函式是通過形參列表區分的,與返回值型別無關。函式過載其實是"乙個名字,多種用法"的思想,不僅函式可以過載,函式過載就是重定義;覆蓋是重寫。
二、new和malloc的區別:
1.new關鍵字 malloc函式
2.new自由儲存區域 malloc堆上
3.new malloc
operator new
constructor
還可以做初始化 malloc 單純開闢內容
4.new可以過載 malloc不能過載
5.new可以呼叫malloc malloc不能呼叫new
6.記憶體開闢 new拋異常 malloc返回null
7.new可以開闢常量 malloc不能
三、c和c++中的const
1、const修飾變數
const修飾變數,可以使變數具有常屬性,也就是該變數在以後的使用中其值都不能 進行改變。(要進行初始化)
2、const修飾指標
int *const p // p不可以變,p指向的值可以變
int const *p // p可以變,p指向的值不可以變
3、保護函式引數不被改變
用const修身函式的引數,可以保證該引數的值在函式內部不被改變。 (一般用引用或者傳位址的方式給函式傳遞乙個引數,如果在函式體內對該引數進行修改,那麼就會連實參的值一併進行修改。)
4、const修飾函式返回值
const修飾函式的返回值,防止函式的返回值被修改,但是這裡要注意的是,必須也用 const修飾的變數來接收這個函式的返回值
5、const修飾類成員函式
const可以修飾類成員函式,防止類成員函式中除了static成員之外的其他成員被修改。
6、const修飾類的成員變數
類的成員變數可以分為靜態的和非靜態的,如果const修飾的是靜態的成員變數,可以在建構函式中對該變數進行初始化;如果const修飾的是靜態的成員變數,則需要在類外對該變數進行初始化。
四、引用:
1、引用是乙個別名(底層以指標做支援)
2、引用一定要初始化
3、引用不能引用取位址的資料
4、引用不能改變
5、引用變數 只能使用 引用變數 所有引用的資料
五、inline函式:
編譯階段 在**的呼叫點直接**展開
inline函式和static修飾的函式的區別
1.inline函式 無開棧和清棧開銷
static 有
2.inline 在呼叫點直接**展開
static 函式符號屬性 l
3、inline函式和巨集的區別
inline 編譯 型別檢查 和 安全檢查
巨集 預編譯 無
inline是乙個更安全的巨集
4、注意事項
實現在.**件
只在release版本生效
給編譯器的乙個建議 遞迴 迴圈 switch
基於實現,不是宣告
5、inline缺點
以**膨脹為代價 空間換時間
6、建議
開棧的開銷 > 執行的開銷 建議設為inline
開棧的開銷 < 執行的開銷 不建議
六、函式的預設值:
1.自右向左依次賦予
2.不能重複賦予
3.一般賦在宣告上
七、c/c++互相呼叫
1.c++呼叫c
c++原始檔 extern 「c」
2.c呼叫c++
c++原始檔可修改 extern 「c」
c++原始檔不可修改 加中間層 .cpp
3.不明確編譯器
#ifdef __cplusplus
八、static:
1、對於非靜態資料成員,每個類物件都有自己的拷貝。而靜態資料成員被當作是類的成員。無論這個類的物件被定義了多少個,靜態資料成員在程式中也只有乙份拷貝,由該型別的所有物件共享訪問。
2 、靜態資料成員儲存在全域性資料區。定義時要分配空間,所以不能在類宣告中定義。由於靜態資料成員屬於本類的所有物件共享,所以,它不屬於特定的類物件,在沒有產生類物件時其作用域就可見,即在沒有產生類的例項時,程式設計師也可以使用它。
3、 靜態資料成員和普通資料成員一樣遵從public,protected,private訪問規則;
4 、static成員變數的初始化是在類外,此時不能再帶上static的關鍵字private,protected 的static成員雖然可以在類外初始化,但是不能在類外被訪問。
extern關鍵字及C C 相互呼叫
extern關鍵字主要修飾變數或函式,表示該函式可以跨檔案訪問,或者表明該變數在其他檔案定義,在此處引用。1.extern修飾變數 1 如果某變數int m在a.c中定義宣告,則其他b.c檔案訪問時,需要用extern宣告該變數才可以。注意extern的嚴格宣告,如在乙個檔案中宣告char a ab...
C C 之間的相互呼叫
c呼叫c 意思是 c檔案中呼叫.cpp檔案中的 c 呼叫c的意思是.cpp檔案中呼叫.c檔案中的 使用extern c 主要原因 主要用於在c 中呼叫的c函式的宣告,或c 中編譯的函式要在c中呼叫,也即是匯入c形式的函式庫或者提供c型別的庫給c呼叫,因為在c 出現以前,很多 都是c語言寫的,而且很底...
C C 寫的WebService相互呼叫
首先感謝永和兄提供c 的webservice伺服器端及客戶端,並且陪我一起熬夜 然後是火石和我做介面的兄弟,雖然都不知道你叫什麼,如果沒有你的合作,東西也沒那麼快完成。一 由於公司運營火石的 西遊q記 火石採用的是c 作為開發語言,unix平台,而我們一直使用windows操作平台,net快速開發。...