特殊的建構函式

2021-10-10 17:52:47 字數 860 閱讀 5655

無參建構函式

當類中沒有定義建構函式時,編譯器預設提供乙個無參建構函式,並且函式體為空
拷貝建構函式

引數為const class_name&的建構函式

當類中沒有定義拷貝函式時,編譯器預設提供乙個拷貝建構函式,簡單的進行成員變數的值複製

#include

class

test

intgetj()

};intmain()

編譯器也會自動生成拷貝建構函式

test

(const test& t)

作用:將成員變數簡單複製
相容c語言的初始化方式

初始化行為能夠符合預期的邏輯

淺拷貝:

拷貝後物件的物理狀態相同

深拷貝:

拷貝後物件的邏輯狀態相同

編譯器提供的拷貝建構函式只進行淺拷貝

類之間的賦值:

test

(const

int& t)

如果要將t1物件賦給t2物件(包含指標),那麼指標時不能直接複製的,因為他們指向同乙個記憶體空間,在後面的釋放空間函式中會重複執行兩次:

t1.free();

t2.free();

結果是報錯,因為第一次釋放已經釋放了,第二次毫無意義,所以報錯

自定義拷貝建構函式,必然需要實現深拷貝

c 特殊建構函式詳解

目錄 眾所周知,建構函式的作用是類在建立物件時的初始化,而拷貝建構函式則是建構函式裡的一種特殊構造。拷貝構造 是c 特有的,他是一種特殊的建構函式 程式設計客棧用於基於乙個同乙個類的的第乙個物件去創造和初始化的乙個物件 第一的引數是本類的物件的引用 const 一種特殊的建構函式,同乙個類的乙個物件...

拷貝建構函式的特殊呼叫方式 陷阱

下屬專案 測試用例數量 方式三 在函式中把類作為形參無1 方式四 在函式中把類作為返回值型別 陷阱無1 define crt secure no warnings include iostream using namespace std include class test void seta in...

自學MATLAB(一) 特殊矩陣建構函式

自學matlab 一 特殊矩陣建構函式 ones n 函式 構建乙個n x n的1矩陣 ones n,m,p 函式 構建乙個n x m x p的1矩陣 ones size a 構建乙個 a 矩陣大小的1矩陣 zeros n zeros n,m,p zeros size a eye n eye n,m...