c 一般指標的深層複製和淺層複製 1

2021-05-28 03:03:52 字數 472 閱讀 6364

如下:

int* first;

int second;

first = new int[5];

second = first;

此時,first和second指標指向同乙個位址,都指向first所在的位址;

如果此時執行如下語句,

delete second;

那麼first和second所指向的陣列被刪除(因為共用乙個位址),

若再執行,

delete first;

那麼程式會因訪問錯誤位址而終止,因為此時first所指向的位址無效了。

要避免這種情況,可以重新申請乙個記憶體空間,如:

second = new [5];

此時first和second 分別指向不同的陣列,任意乙個陣列被刪除都不會影響另乙個陣列。

這就是淺層複製和深層複製的區別。

淺層複製和深層複製

淺層複製 深層複製 物件的淺層複製 class point point int x,int y x x y y int getx int gety void move int t,int q private int x,y class pts point類的動態陣列 封裝成了類 由上圖可知,上面的程...

C 淺層複製建構函式和深層複製建構函式

淺層複製建構函式 class person person person one 自定義淺層複製建構函式,就是複製乙個物件,說到底,就是複製傳進來的物件的所有成員變數,實際上,系統的預設淺層複製建構函式也是類似這樣的原理 person void setheight int h int getheigh...

理解一般指標和指向指標的指標

在說指向指標的指標之前,不得不說指向變數的指標。先看如下示例 1.指向整型指標 先看如下示例 1 include 2 using namespace std 3 4 int main 5 執行結果如下 我們先看下記憶體分配圖 由上圖可以清楚的知道,輸出整形變數a的值是5,指標變數p的值是001bfd...