c 學習筆記

2022-07-10 09:30:19 字數 934 閱讀 6301

一. 建構函式的分類與規則

1.分類:

無參、有參、拷貝

2、呼叫方式:

括號、顯示、隱式

3、規則:

如果使用者定義有參建構函式,c++不在提供預設無參構造,但是會提供預設拷貝構造

如果使用者定義拷貝建構函式,c++不會再提供其他建構函式

二. 深拷貝與淺拷貝

1. 淺拷貝:簡單的賦值拷貝操作;預設拷貝建構函式裡都是淺拷貝(當成員屬性有指標時,淺拷貝是直接將位址拷貝到新的物件之中)

2. 深拷貝:在堆區重新申請空間,進行拷貝操作,(注:析構函式通常將堆區開闢的資料釋放,因此當前一物件的指標屬性被釋放,新物件將報錯)

1

class

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, int

c) :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...