拷貝建構函式
三種拷貝方式:淺拷貝、深拷貝以及寫時拷貝
淺拷貝:
又稱位拷貝。 將原物件或原陣列的引用直接賦給新物件,新陣列,新物件只是原物件的乙個引用(等號操作)。只拷貝了的指標的值,實際上變成了多個指標物件指向同乙個位址,共用同一塊記憶體。例子如下:
實際使用:
當物件中的值不能進行改變是乙個const常量時,物件只可進行讀不能進行修改,使用淺拷貝可減少記憶體的開銷。
c++中不能使用memcpy和realloc等函式,會發生淺拷貝。
深拷貝:
淺拷貝中的多個物件指向同一塊記憶體,當原物件改變記憶體空間裡面的值時,其他拷貝物件的值會隨之發生改變。
深拷貝不僅拷貝指標的值,還會開闢新的記憶體空間,將內容拷貝到新的記憶體空間。
深拷貝主要依靠拷貝建構函式和賦值運算子的過載兩個步驟來實現,深拷貝有兩種寫法:傳統寫法和現**法。
傳統寫法:
string
(const string& s )
string&
operator=(
const string& s)
return
*this
;}
現**法:
;}寫時拷貝:將深淺拷貝合二為一。淺拷貝節省記憶體空間,但拷貝物件不能修改記憶體空間的值;深拷貝能修改記憶體空間的值,但需要開闢新的記憶體空間,浪費資源。寫時拷貝則是在唯讀時不開新空間,在要修改時開新空間。
寫時拷貝在字串的首位置之前多開闢一塊空間,來存放引用計數
基於tcp的基礎socket程式設計c c
c 對於網路開發的總結 2020.3.12 22 10 一,技術的應用 1,socket套接字技術。2,winapi多執行緒技術。3,對於tcp ip協議的理解。4,網路的七層模型協議。二,程式設計收發流程 1,初始化套接字型檔 函式原型 int wsastartup word wversionre...
C C 程式設計 物件
c 程式可以建立 銷毀 引用 訪問並操作物件 在c 中,乙個物件可以擁有這些性質 以下實體都不是物件 值,引用,函式,列舉項,型別,類的非靜態成員,模板,類或函式模板的特化,命名空間,形參包,和 this。變數由宣告所引入,是乙個物件或不是對非靜態資料成員的引用。物件能由定義 new 表示式 thr...
基於物件的程式設計
物件就是類的例項。乙個類與自身具有同樣名稱的成員函式叫做建構函式。沒有引數的建構函式稱為預設建構函式。雙冒號 是作用域操作符。函式過載 同樣函式名稱能夠用不同形式引數定義多次。引數是通過值進行傳遞的。內聯函式 減小開銷,新增效率。環境變數 include includeusing namespace...