1.初步認識類與物件
主觀世界的抽象類別----->計算機世界中的類;現實世界的實體----->計算機世界的物件;
在現實世界中,實體被抽象成抽象類別;在計算機世界中,類可以被例項化為物件;
簡述c語言與c++的區別:
c語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題;
c++基於物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成;
2.類的引入
c語言中,結構體中只能定義變數,在c++中,結構體內不僅可以定義變數,也可以定義函式;
一般c語言中,用struct表示結構體,在c++中一般使用class表示類;
3.類的定義
class為定義類的關鍵字,classname為類的名字,{}中為類的主體,注意類定義結束時後面分號;
類中的元素稱為類的成員:類中的資料稱為類的屬性或者成員變數,類中的函式稱為類的方法或者成員函式。
類的兩種定義方式:
1、宣告和定義全部放在類體中,需要注意:成員函式如果在類中定義,編譯器可能會將其當成內聯函式處理。
2、宣告放在.**件中,類的定義放在.cpp檔案中
4.類的訪問限定符及封裝
c++實現封裝的方式:用類將物件的屬性與方法結合在一起,讓物件更加完善,通過訪問許可權選擇性的加你過期介面提供給外部的使用者使用。
訪問限定符:public(公有)、protected(保護)、private(私有)
訪問限定符說明:
1、public修飾的成員在類外可以直接被訪問
2、protected和private修飾的成員在類外不能直接被訪問(此處protected和private是類似的)
3、訪問許可權作用域從該訪問限定符出現的位置開始直到下乙個訪問限定符出現時為止
4、class的預設訪問許可權為private,struct為public(因為struct要相容c)
注意:訪問限定符只在編譯時有用,當資料對映到記憶體後,沒有任何訪問限定符上的區別
封裝:將資料和運算元據的方法進行有機結合,隱藏物件的屬性和實現細節,僅對外公開介面來和物件進行互動;實際封裝的本質是一種管理
5.類的作用域
類定義了乙個新的作用域,類的所有成員都在類的作用域中,在類體外定義成員,需要使用::作用域解析符指明成員屬於哪個類域
6.類的例項化
簡單來說就是用類型別建立物件的過程,稱為類的例項化;例如:class n1; n1 a;a就是類的例項化物件
7.類物件模型
類物件是怎麼儲存的?
只儲存成員變數,成員函式存放在公共的**段
看**分析:
1、空類:
2、僅有函式的類:
3、有函式也有變數的類:
結論:乙個類的大小,實際就是該類中「成員變數」之和,當然也要進行記憶體對齊,注意空類的大小,空模擬較特殊,編譯器給了空類乙個位元組來唯一標識這個類
結構體內存對齊規則:
1、第乙個成員在與結構體偏移量為0的位址處
2、其他成員變數要對齊到某個數字的整數倍的位址處
注意:對齊數 = 編譯器預設的乙個對齊數 與 該成員大小的較小值(vs中預設的對齊數為8,gcc中的對齊數為4)
3、結構體總大小為:最大對齊數的整數倍
4、如果巢狀了結構體的情況,巢狀的結構體對齊到自己的最大對齊數的整數倍,結構體的整體大小就是所有最大對齊數的整數倍
8.this指標
c++編譯器給每個「成員函式」新增了乙個隱藏的指標引數,讓改指標指向當前物件(函式執行呼叫該函式的物件),在函式中所有成員變數的操作,都是通過該指標去訪問。只不過所有的操作對使用者是透明的,即使用者不需要來傳遞,編譯器自動完成。
this的特性:
1、this指標的型別;類型別* const
2、只能在「成員函式」的內部使用
3、this指標本質其實是乙個成員函式的形參,是物件呼叫成員函式時,將物件位址作為實參傳遞給this形參,所以物件中不儲存this指標
4、this指標是成員函式第乙個隱含的指標形參,一般情況由編譯器通過ecx暫存器自動傳遞,不需要使用者傳遞
注意:當成員函式不使用this指標時,this指標可以為空;當成員函式使用this指標時,this不能為空
C 類與物件(上篇 基礎知識講解)
c語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題。例如 如何將大象裝進冰箱?第一步 開啟冰箱 第二步 把大象塞進冰箱 第三步 關上冰箱 c 是基於物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成。例如 把車開走。抽象兩個物件 人和車。具體描述...
C 基礎知識(類和物件)
現實世界中,將事物的屬性和行為表示出來,就可以抽象出這個事物。定義乙個結構體用來表示乙個物件所包含的屬性,函式用來表示乙個物件所具有的行為,這樣就可以表示乙個事物。在c中,行為和屬性是分開的。屬性和行為應該放在一起,一起表示乙個具有屬性和行為的物件。封裝提供一種機制能夠給屬性和行為的訪問控制權。所以...
類和物件基礎知識
1.類和物件的基礎知識 定義 類就可以看做是對相似事物的抽象 訪問限定符 public,private,protect 封裝性 1 良好的封裝能夠減少耦合。2 類內部的結構可以自由修改。3 可以對成員進行更精確的控制。4 隱藏實現細節 物件大小計算 只計算非靜態成員變數 公有私有都算 不算函式,和s...