1、c++中方法 儲存在單獨的方法表中,fuction——table,類中有方法指標來指向方法表中方法的實際位址,static和nonstatic 方法都儲存在方法表中。
2、c++中類的物件的 成員變數存在class中,static 變數儲存在class之外。
3、c++的成員指標式類似slot 插槽式設計,很容易計算class的大小。
4、每個class 產生一堆指向vitrul fuction的指標,這些指標放在乙個表中,稱為virtual table(vtbl)。
5、c++中物件直接賦值,實際上發生的是copy構造 例如:animals 是父類,dog是子類,
dog d;
animals ani=d;
ani實際訪問到的其實還是ani能訪問的 ani初期編譯能訪問到的函式和變數,它並不是乙個d物件。好繞口,好難講清楚。
6、c++通過指標和引用型別來實現多型,也就是只有再指標型別和引用型別下能發生多型;;主要靠virtual 來實現多型,virtual function,virtual table。
C和C 記憶體模型
c分為四個區 堆,棧,靜態全域性變數區,常量區 c 分為四個區 堆,棧,靜態全域性變數去,常量區,自由儲存區。根據c c 物件生命週期不同,c c 的記憶體模型有三種不同的記憶體區域,即自由儲存區,動態區 靜態區。自由儲存區 區域性非靜態變數的儲存區域,即平常所說的棧 動態區 用operator n...
c 記憶體模型
1 棧區 由編譯器自動分配和釋放,存放函式的引數數值,區域性變數的值 其操作方式類似於資料結構中得棧 2 堆區一般由使用者分配和釋放,若使用者不釋放,程式結束時候由os 它與資料結構中堆是兩回事,分配方式類似鍊錶 3 全域性區 靜態區 static全域性變數和靜態變數的存放區域。初始化的全域性變數和...
C 記憶體模型
1.在c 中,不要在標頭檔案中進行變數宣告。因為單定義規則的存在,不同原始檔中對於同乙個全域性變數只能夠定義一次。因此如果在標頭檔案中包含變數定義,那麼很有可能使用相同標頭檔案的原始檔會對這個變數產生多次定義。2.new 與 delete等通過動態分配記憶體產生的資料將儲存在堆 heap 中。3.在...