一. 建構函式的分類與規則
1.分類:
無參、有參、拷貝
2、呼叫方式:
括號、顯示、隱式
3、規則:
如果使用者定義有參建構函式,c++不在提供預設無參構造,但是會提供預設拷貝構造
如果使用者定義拷貝建構函式,c++不會再提供其他建構函式
二. 深拷貝與淺拷貝
1. 淺拷貝:簡單的賦值拷貝操作;預設拷貝建構函式裡都是淺拷貝(當成員屬性有指標時,淺拷貝是直接將位址拷貝到新的物件之中)
2. 深拷貝:在堆區重新申請空間,進行拷貝操作,(注:析構函式通常將堆區開闢的資料釋放,因此當前一物件的指標屬性被釋放,新物件將報錯)
1class
person
67 person(int age, int
height)
1314
//自己實現拷貝建構函式,解決淺拷貝帶來的問題
15 person(const person &p)
1623
24 ~person()
31 cout << "
析構函式!
"<3334
intm_age;
35int *m_height;
36 };
總結:如果屬性有在堆區開闢的,一定要自己提供拷貝建構函式,防止淺拷貝帶來的問題
三.初始化列表
c++提供了初始化列表語法,用來初始化屬性
語法:建構函式():屬性1(值1),屬性2(值2)... {}
1 person(int a, int b, intc) :m_a(a), m_b(b), m_c(c) {}
2void
printperson()
C 學習筆記( )
一 語法 迴圈 foreach 型別識別符號 in 表示式 code 用法 例子int temp foreach int num in temp 每次從temp取乙個元素賦給num直至取完 console.writeline n num 每行顯示乙個元素 執行結果 c 中唯讀 只寫控制 class ...
C 學習筆記
1.函式特徵 有函式頭和函式體 接受乙個引數 返回乙個值 需要乙個原型。2.c 命名規則 在名稱中只能使用字母字元 數字和下劃線 名稱的第乙個字元不能是數字 區分大寫字母和小寫字母 不能將c 關鍵字用作名稱 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給實現 編譯器及其使用的資源 使用,以乙個下劃...
c 學習筆記
屬性 屬性開頭字母大寫 屬性可以判斷輸入的非法值 屬性本身不儲存值 依靠字段 索引器 using system using system.collections.generic using system.linq using system.text namespace b try catch exc...