物件導向:物件是指類的例項,將物件作為程式的基本單元,將程式和資料封裝在其中,以提高軟體的重用性,靈活性和擴充套件性。
物件導向的三大特性:封裝、繼承、多型
類是現實世界對實體的抽象類別的對映,它是乙個模型,定義出乙個類並沒有分配實際的記憶體空間來儲存它。每個物件的大小為類中所有成員變數的大小之和,並遵循記憶體對齊規則。
定義乙個類
讀取變數d的內容,假設cpu字長4位元組class
a;
遵循記憶體對齊規則讀取變數內容時,能減少記憶體讀取次數,以此來提高效率
記憶體對齊規則:
1.第乙個成員在與結構體變數偏移量為0的位址處。
2.其他成員變數要對齊到min(編譯器預設的對齊數,該成員大小)的整數倍的位址處。
3.結構體總大小為最大對其數的整數倍。
4.如果巢狀了結構體,巢狀的結構體對齊到自己的最大對其數的整數倍處,結構體的整體大小就是所有最大對齊數的整數倍。
空類的大小:1位元組,用來佔位,表示自己存在過~
類的預設成員函式:
建構函式
建構函式在定義物件時自動執行一次,用來對成員變數初始化。
特徵:
1.函式名與類名相同。
2.無返回值。
3.物件構造時系統自動呼叫對應的建構函式。
4.建構函式可以過載。
5.建構函式可以在類中定義,也可以在類外定義。
6.如果類定義中沒有給出建構函式,則編譯器自動產生乙個無參的建構函式,但只要定義了乙個建構函式,系統就不會預設生成預設的建構函式。
拷貝建構函式
拷貝建構函式在建立物件時使用同類物件來進行初始化,拷貝建構函式是特殊的建構函式。
特徵:
1.拷貝建構函式是建構函式的乙個過載。
2.拷貝建構函式的引數必須使用引用傳參,使用傳值的方式會引發無窮遞迴呼叫。
3.若未顯示定義,系統會預設生成預設的拷貝建構函式。
析構函式
析構函式用來在物件生命週期結束時,完成清理工作。
特徵:
1.析構函式在類名前加~。
2.析構函式無引數無返回值。
3.乙個類有且只有乙個析構函式,若未預設定義,會自動生成。
4.物件宣告週期結束時,編譯器自動呼叫析構函式。
5.析構函式體內不是刪除物件,而是做一些清理工作。
賦值運算子過載
賦值運算子過載是對乙個已存在的物件進行拷貝賦值。
C 類與物件
程式設計模型 所有計算機均由兩種元素組成 和資料.精確的說,有些程式是圍繞著 什麼正在發生 而編寫,有些則是圍繞 誰正在受影響 而編寫的.抽象封裝 封裝是一種把 和 所操作的資料 在一起,使這兩者不受外界干擾和誤用的機制.繼承 繼承是指乙個物件從另乙個物件中獲得屬性的過程.是物件導向程式設計的三大原...
C 類與物件
c 類與物件 區分物件導向與面向過程 物件導向是指一種程式設計范型,同時也是一種程式開發的方法。它將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性 靈活性和擴充套件性。物件導向 利用物件間的訊息傳遞來驅動程式的執行。優點 真實表現客觀世界,物件間的關係清晰,物件間的訊息處理高效。面...
C 類與物件
類是物件導向的核心機制,是物件導向設計中對具有相同或相似性質的物件的抽象,是對資料和操作進行封裝的載體,進而保證了對資料的安全 高效 合理的訪問 物件是類的例項,是類的具體個體,對應現實世界的實體。類的定義 class 類名 void showclock 習慣上在類的宣告中只定義函式的原型,在類外定...