類和物件(中)筆記

2021-09-12 06:46:13 字數 1912 閱讀 7117

1.c++中struct和class的區別是什麼? 

答:c++需要相容c語言,所以c++中struct可以當成結構體去使用。

另外c++中struct還可以用來定義類,和class是定義類是一樣的。

區別是struct的成員預設訪問方式是public,class是struct的成員預設訪問方式 是private。

2.封裝

物件導向的三大特性:封裝、繼承、多型。

在類和物件階段,我們只研究類的封裝特性,那什麼是封裝呢?

封裝:將資料和運算元據的方法進行有機結合,隱藏物件的屬性和實現細節,僅對外公開介面來和物件進行 互動。

3.乙個類為空類物件佔乙個位元組,若乙個類中只有函式類物件也只佔乙個位元組

4. 結構體內存對齊

1)第乙個成員在與結構體偏移量為0的位址處。 

2) 其他成員變數要對齊到某個數字(對齊數)的整數倍的位址處。 

注意:對齊數 = 編譯器預設的乙個對齊數 與 該成員大小的較小值。 

vs中預設的對齊數為8,gcc中的對齊數為4

3) 結構體總大小為:最大對齊數(所有變數型別最大者與預設對齊引數取最小)的整數倍。

4) 如果巢狀了結構體的情況,巢狀的結構體對齊到自己的最大對齊數的整數倍處,

結構體的整體大小就是 所有最大對齊數(含巢狀結構體的對齊數)的整數倍

設定預設對齊數:#prgma pack()

如何知道結構體a成員的偏移量             cout<<(((c*)0)->a)<5.this指標

1) this指標的型別:類型別* const    位址不能改變內容可以改變             const int* a 位址可以改變內容不能變換

2)只能在「成員函式」的內部使用 

3) this指標本質上其實是乙個成員函式的形參,是物件呼叫成員函式時,

將物件位址作為實參傳遞給this 形參。所以物件中不儲存this指標。 

4)this指標是成員函式第乙個隱含的指標形參,一般情況由編譯器通過ecx暫存器自動傳遞,不需要使用者 傳遞

6.類中的六個預設成員函式

1)建構函式:完成初始化。預設建構函式 類名()+{}和全預設引數函式(也是預設建構函式)乙個類中只能存在乙個。

2)析構函式:物件在銷毀時自動呼叫完成清理工作。 ~+類名()+{}

3)拷貝建構函式:只有單個形參,該形參是對本類型別物件的引用(一般常用const修飾),

在用已存在的類型別物件 建立新物件時由編譯器自動呼叫

類名(const 類名+引用+變數)+{}

為什麼形參要引用?

如果是值傳遞每次呼叫都會發生拷貝,拷貝繼續呼叫拷貝建構函式這樣九無窮無盡的呼叫拷貝建構函式

對 於引用來說不會發生拷貝,所以就不會呼叫拷貝建構函式 

若未顯示定義,系統生成預設的拷貝建構函式。 預設的拷貝建構函式物件按記憶體儲存按位元組序完成拷 貝,

這種拷貝我們叫做淺拷貝,或者值拷貝。

4)運算子過載

函式名字為:關鍵字operator後面接需要過載的運算子符號。

函式原型:返回值型別?operator操作符(引數列表)

賦值運算子過載有四點:a. 引數型別 b. 返回值 c. 檢測是否自己給自己賦值 d. 返回*this 

e. 乙個類如果沒有顯式定義賦值運算子過載,編譯器也會生成乙個,完成物件按位元組序的值拷貝。

data d3=d1;是拷貝構造乙個新物件d3  賦值運算子是兩個變數要賦值必須先要存在

5)取位址

6)const取位址操作符過載

7.const成員

1) const物件可以呼叫非const成員函式嗎? 不可以

2) 非const物件可以呼叫const成員函式嗎? 可以

3) const成員函式內可以呼叫其它的非const成員函式嗎? 不可以

4.)非const成員函式內可以呼叫其它的const成員函式嗎? 可以

類和物件(筆記)

許可權修飾符 this關鍵字 this.name name 第乙個name指的是類中的name成員變數,而第二個name則指的是形參name,實質上功能就是將形參name值賦給成員變數name。事實上,this引用的就是本類的乙個物件。靜態變數 常量 有時,在處理問題時會需要兩個類在同乙個記憶體區域...

類和物件中

主要完成初始化工作,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員都有乙個合適的初始值,並且在物件的生命週期內只呼叫一次 class date 2.帶參建構函式 date int year,int month int day private int year int month ...

oc中類和物件

類與物件的概念 類是對同一類事物高度的抽象,類中定義了這一類物件所應具有的靜態屬性 屬性 和動態屬性 方法 物件是類的乙個例項,是乙個具體的事物。類與物件是抽象與具體的關係。類其實就是一種資料型別,它的變數就是物件。類與類之間的關係 繼承關係 a是b如果這句話說的通,在設計程式的時候就可以看成是繼承...