類和物件:
1.struct與class唯一區別:在於預設訪問許可權不同
struct為public,class為private
2.構造與析構函式(初始化和清理)
建構函式:類名()函式可以有引數,可以發生過載
析構函式:~類名()…,不可以發生過載,析構**,將堆區開闢資料做釋放操作。
3.類名加()建立乙個匿名物件,建立即被釋放
4.c++編譯器預設新增4個函式:
(1).預設建構函式(空實現)
(2).預設析構函式(空實現)
(3).預設拷貝函式(預設值拷貝)
(4).賦值運算子operator=,對屬性進行值拷貝
建構函式與拷貝函式
1.建構函式分類及呼叫:
(1). 按引數分:有參構造與無參(預設構造)
(2).按型別分:普通構造與拷貝構造
2.拷貝建構函式格式:
(1).類名(const 類名 &類的物件名)
呼叫方式:括號法
呼叫預設建構函式時,不要加();
(2). 顯示法
(3). 隱式轉換法
3.拷貝構造函式呼叫時機:
(1).使用乙個已經建立完畢的物件來初始化乙個新物件
(2).值傳遞的方式給函式引數傳值
(3).值方式返回區域性物件
4.構造函式呼叫規則:
a:編譯器提供的預設建構函式 b:定義的有參建構函式 c:編譯器提供的預設拷貝建構函式 d:定義的拷貝建構函式
(1).如果使用者定義有引數建構函式,c++不再提供預設無參建構函式,但是提供預設拷貝函式。
有b無a,可有c
(2).如果使用者定義拷貝建構函式,c++不再提供其他建構函式(包括預設函式)。
有d無ac
5.深拷貝與淺拷貝:
淺拷貝:簡單的賦值拷貝操作,可能帶來的問題是堆區的記憶體重複釋放。
淺拷貝帶來的問題由深拷貝解決
深拷貝:在堆區重新申請空間,進行拷貝操作。
如果屬性有在堆區開闢的,一定要自己提供拷貝建構函式,防止淺拷貝帶來的問題
初始化列表:
建構函式():屬性1(賦值1),屬性2(賦值2),…
類物件作為類成員:
classa;
classb;
//先宣告後使用
2.靜態成員
靜態成員(static)
;void
y(building &build)
{cout<>dinning
3.成員函式做友元
C 類 物件資料整理
定義乙個類,本質上是定義乙個資料型別的藍圖。這實際上並沒有定義任何資料,但它定義了類的名稱意味著什麼,也就是說,它定義了類的物件包括了什麼,以及可以在這個物件上執行哪些操作。類有兩個特性 乙個是繼承,乙個是封裝。類定義是以關鍵字class開頭,後跟類的名稱。類的主體是包含在一對花括號中。類定義後必須...
C 知識整理 類與物件的概念
1 類外定義成員函式 2 內建成員函式 3 成員函式的儲存方式 c 並不是一種純粹的物件導向的語言,而是一種基於過程和物件導向的混合型語言。c 物件導向的機制就是為了解決編寫大程式時遇到的困難。物件導向的程式設計有4個主要的特點 抽象 封裝 繼承和多型性。c 的類物件體現了抽象和封裝的特徵,在此基礎...
C 類與物件
程式設計模型 所有計算機均由兩種元素組成 和資料.精確的說,有些程式是圍繞著 什麼正在發生 而編寫,有些則是圍繞 誰正在受影響 而編寫的.抽象封裝 封裝是一種把 和 所操作的資料 在一起,使這兩者不受外界干擾和誤用的機制.繼承 繼承是指乙個物件從另乙個物件中獲得屬性的過程.是物件導向程式設計的三大原...