1.類和物件的初步認知
c語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題。
c++是基於物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成。
2.類的引入
c語言中,結構體只能定義變數,在c++中,結構體內不僅可以定義變數,也可以定義函式。
3.類的定義
class classname
;//注意這裡有個分號
class為定義類的關鍵字,classname為類的名字,{}中為類的主體。類中的元素稱為類的成員:類中的資料稱為類的屬性或者成員變數;類中的函式稱為類的方法或成員函式。
類的兩種定義方式:
3.1宣告和定義全部放在類體中。
class person
;//這裡需要指定printpersoninfo是屬於person這個類域
void person::printpersoninfo()
private:
int _a;
};// 類中僅有成員函式
class a2
};// 類中什麼都沒有---空類
class a3
{};
結論:乙個類的大小,實際就是該類中「成員變數」之和,當然也要進行記憶體對齊,注意空類的大小,空模擬較特殊,編譯器給了空類乙個位元組來唯一標識這個類。7.2結構體內存對齊規則1.第乙個成員在與結構體偏移量為0的位址處。
2.其他成員變數要對齊到某個數字(對齊處)的整數倍的位址處。
注意:對齊數=編譯器預設的乙個對齊數與該成員大小的較小值
vs中預設的對齊數為8,gcc中的對齊數為4
3.結構體總大小為:最大對齊數(所有變數型別最大者與預設對齊引數取最小)的整數倍。
4.如果巢狀了結構體的情況,巢狀的結構體對齊到自己的最大對齊數的整數倍,結構體的整體大小就是所有最大對齊數(含巢狀結構體的對齊數)的整數倍。
8.this指標
c++編譯器給每個「成員函式」增加了乙個隱藏的指標函式,讓該指標指向當前物件(函式執行時呼叫該函式的物件),在函式體中所有成員變數的操作,都是通過該指標去訪問。只不過所有的操作對使用者是透明的,即使用者不需要來傳遞,編譯器自動完成。
this指標的特性:
1.this指標的型別:型別為*const
2.只能在「成員函式」內部使用
3.this指標本質上其實是乙個成員函式的形參,是物件呼叫成員函式時,將物件位址作為實參傳遞給this形參。所以物件中不儲存this指標。
4.this指標是成員函式第乙個隱藏的指標形參,一般情況由編譯器通過ecx暫存器自動傳遞,不需要使用者傳遞。
1 類和物件
1 類和物件.h import 注意檔名稱與類名沒有什麼實質的關係,創造類時最好把檔名和類名設定成一致的,目的方便使用 oc中類的宣告標誌是 inte ce end student 當前類名 nsobject 父類名 代表繼承關係 inte ce student nsobject 所有的特徵與行為都...
類和物件1
類 物件物件的三大特性 類和物件的區別 類是靜態定義 物件是動態例項 程式 操作的是物件而非類 建模得到的是類而非物件 類和物件的 聯絡 類是物件的定義 物件的產生離不開類這個模板 類存在的目的是例項化得到物件 定義類的步驟 1.類名,2.類的資料成員代表屬性,3.編寫類的方法代表行為 類的建模是乙...
類和物件(1)
1.類與物件的初步認知 c語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題。資料和運算元據的方法是分離開的。c 是基於物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成。結構體中不僅僅可以放資料,也可以放函式。2.類的引入 c語言中,結構體中只能...