## 面向對象三要素 封裝:顧名思義,將函數或變數集中定義在類中,而非散亂分佈。 繼承:擴展類的功能。 多態:在擴展類的功能的基礎之上,實現其內部方法的多樣性。 ### 多態的本質 針對某個類型的方法調用,其真正執行的方法取決於運行時期實際類型的方法。 ```java package Project ...
1 全局變數 全局存儲區
2 普通函數內變數 vs設置的棧大小 存放在這個棧上 是棧變數 棧變數在函數使用結束後記憶體會被回收 棧會曾使用完後棧減
3 函數參數 在cpu寄存器 速度是最快的 參數在給別的介面或者變數賦值時結束後生命周期結束是一個一個賦的 因為彙編指令一次只執行一個操作 move stuck地址 eax
多個就是
move stuck地址 eax
move eax 新參數
move stuck:+4 eax
move eax 新參數2號
move stuck:+8 eax
4 類
class 是 new 的在堆
class 不是 new 的在棧
堆的一個一個new 存 stl 里
棧的直接 類名 變數名 初始化在構造函數內 手動實現 程式員初始化
5 靜態變數
類內 靜態變數在全局存儲區
類內 靜態類在全局存儲區
普通文件內全局靜態變數 全局存儲區
普通文件內全局靜態類 全局存儲區
6 類內成員參數 創建在棧變數也在棧 創建在堆變數也存在堆(但是運行時類函數整個都在棧上)這個是存儲在堆上運行在棧上
虛函數不影響記憶體分配 虛函數有子孫函數表 使用雙冒號可以調用整個孫子到祖先內的函數調用
7 const 常量 在全局存儲區 類的根據new不new new在堆不new在棧 使用const_cast<>可以改變常量的值
8 枚舉 此變數不是變數 是立即數 編譯時直接寫到exe中
move stuck:+0 50
浮點數的彙編我也不會還沒精力去看,好累好難