函式過載:c語言的符號生成規則:只和函式名有關
c++的符號生成規則:函式原型(函式頭部),
1.返回值
返回值不能作為過載的依據,可能會產生二義性
2.函式名
c語言的符號生成規則只和函式名有關,如果把函式名作為返回值的話,就和c語言衝突了.
3.函式形參(1)引數個數(2)引數型別(3)引數順序
函式形參作為函式過載的依據.
函式過載的三要素:1.同名2.不同參3.同作用域
malloc和new的區別:
1.new關鍵字,malloc函式
2.new自由儲存區3.malloc堆
3.operator new,construct(可以做初始化) malloc(單純開闢內容)
4.new可以過載,malloc不能過載
5.new可以呼叫malloc,malloc不能呼叫new
6.記憶體開闢,new丟擲異常,malloc返回null,
7.new可以開闢常量,malloc不能
malloc:void* malloc(size_t size);//malloc函式原型
void free(void* ptr)
new delete
int* p=malloc(1)//兩個錯誤
(導致記憶體洩漏)(不能申請1)
int* p=new int;
int a;
char* pc=new (&a) char(『a』); (重定位new)
const:c語言:常變數
編譯階段,看常變數有沒有做左值,其他的處理和變數是一樣的.
c++:常量
編譯階段,將用到常量的地方替換成常量初始化的值.
1.定義常量時一定要初始化.
2.不允許做左值.
3.不允許間接訪問來修改常量記憶體 杜絕間接訪問的風險
c:const修飾的全域性變數 g
c++:const修飾的全域性變數 l extern
常函式:函式後面加const//修飾this指標
引用:別名(引用底層以指標做支援)
1.引用一定要初始化.(引用是記憶體單元的別名)
2.引用不能引用不能取位址的資料
3.引用不能改變
4.引用變數只能使用引用變數所有引用的資料.
inline函式:編譯階段:在**呼叫點直接**展開
內聯函式和static修飾的函式的區別:
1.inline函式沒有開棧和清棧的開銷2.static有
2.inline在呼叫點直接**展開 static函式符號屬性
inline函式和巨集的區別
1.inline 編譯 型別檢查和安全檢查
2.巨集 預編譯 無
3.inline是乙個更加安全的巨集
inline的注意事項:
1.實現在標頭檔案下
2.只在realease版本生效
3.給編譯器的乙個建議(遞迴,迴圈,switch)
4.基於實現,不是基於宣告
inline的缺點:
以**膨脹為代價,空間換時間,有個閥值.
建議:1.開棧開銷》執行的開銷(建議設為)
2.開棧開銷《執行的開銷(不建議設為)
C 基本知識
內聯函式 在c 98的標準下為63個關鍵字 1.普通的命名空間 namespace n1 n1為命名空間的名稱 2.命名空間可以巢狀 namespace n2 namespace n3 3.同乙個工程中允許存在多個相同名稱的命名空間,編譯器最後會合成同乙個命名空間中。1.加命名空間名稱及作用域限定符...
c 基本知識
1.類 包含某一物體的基本屬性的抽象。2.物件 具體指某乙個物體。實實在在存在的東西。3.建構函式 負責類建立物件的函式。如果類沒有宣告建構函式,c 編譯器會提供預設的無參的建構函式。這個函式只負責建立物件,不負責物件初始化工作。4.析構函式 負責釋放物件,記憶體的 5.變數訪問修飾符 public...
C 基本知識
c 基本語法 特點 1每條語句以分號結尾,建議一行一語句 2嚴格區分大小寫 3 塊使用來界定,塊種可包含任意條語句 注釋 單行注釋 多行注釋 摺疊 region.endregion 變數 計算機種佔據一定記憶體單元的儲存區域。變數名 儲存資料的變數所佔據的那塊記憶體單元的標識名。變數的命名規則及特點...