學習C 的基本類和物件的基本知識總結

2021-08-03 03:45:24 字數 2830 閱讀 5374

主要概括:類的定義,訪問限定符,物件導向封裝性,物件的大小計算等等

1 類的定義:

對類似的物件進行抽象,找出共同的屬性就可以構成一種型別。將抽象後的資料和函式「封裝「在一起就構成了c++中的類。

2. 物件

物件指的是類的例項,將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充套件性。

3. 訪問限定符

訪問限定符有:public(共有),protected(保護),private(私有)三種。訪問限定符是針對類的層次上,因此乙個類的作用域內可以訪問該類任何物件的protected或private方法及成員,這些限定符是限定類的,不是限定物件的,只要型別相同就相互訪問。

【訪問限定符的特點】

1)public成員可從類外部直接訪問,private/protected成員不能從類外部直接訪問。

2)每個限定符在類體中可使用多次,它的作用域是從該限定符出現開始到下乙個限定符之前或類體結束前。

3)類體中如果沒有定義限定符,則預設為私有的。

4)類的訪問限定符體現了物件導向的封裝性。

【類的作用域】

類的作用域

1)每個類都定義了自己的作用域,類的成員(成員函式/成員變數)都在類的這個作用域內,成員函式內可任意訪問成員變數和其它成員函式。

2)物件可以通過「 .」 直接訪問公有成員,指向物件的指標通過 -> 也可以直接訪問物件的公有成員。

3)在類外定義成員,需要使用 :: 作用域解析符指明成員屬於哪個類域。

4. 物件導向的封裝性

封裝的三個條件:

(1)有乙個清楚的邊界

(2)有確定的介面

(3)受保護的內部實現

三種訪問限定符是c++實現並封裝的關鍵

5. 物件的大小計算

#include

//#include

using

namespace

std;

class a

;class b

;int main()

{ cout

<

<

【記憶體對齊的規則】

記憶體對其規則:

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

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

//對齊數= 編譯器預設的乙個對齊數 與 該成員大小的較小值。vs中預設的值為8gcc中的預設值為4

3)結構體總大小為最大對齊數(每個成員變數除了第乙個成員都有乙個對齊數)的整數倍。

4)如果巢狀了結構體的情況,巢狀的結構體對齊到自己的最大對齊數的整數倍處,結構體的整體大小就是所有最大對齊數(含巢狀結構體的對齊數)的整數倍。

類中有六個預設成員函式,分別是:建構函式,拷貝建構函式,析構函式,賦值操作符過載,取位址操作符過載,const修飾的取位址操作符過載。其中前四個是比較重要的,也是比較基本的。

(1)建構函式:

成員變數為

私有的

,要對它們進行初始化,必須用乙個公有成員函式來進行。同時這個函式應該有且僅在定義物件時自動執行一次,這時呼叫的函式稱為建構函式(constructor) 。

建構函式是特殊的成員函式,其特徵如下:

1. 函式名與類名相同。

2. 無返回值。

3. 物件構造(物件例項化)時系統自動呼叫對應的建構函式。

4. 建構函式可以過載。

5. 建構函式可以在類中定義,也可以在類外定義。

6. 如果類定義中沒有給出建構函式,則c++編譯器自動產生乙個預設的建構函式,但只要我們定義了乙個建構函式,系統就不會自動

生成預設的構造

函式。

7. 無參的建構函式和全預設值的建構函式都認為是預設建構函式,並且預設的建構函式只能有乙個。

(2)拷貝建構函式

建立物件時使用同類物件來進行初始化,這時所用的建構函式稱為拷貝建構函式(copy constructor),拷貝建構函式是特殊的建構函式。

特徵:

1. 拷貝建構函式其實是乙個建構函式的過載。

2. 拷貝建構函式的引數必須使用引用傳參,使用傳值方式會引發無窮遞迴呼叫。

3. 若未顯示定義,系統會預設預設的拷貝建構函式。預設的拷貝建構函式會,依次拷貝類成員進行初始化。

(3)析構函式

當乙個物件的生命週期結束時,c++編譯系統會自動呼叫乙個成員函式,這個特殊的成員函式即析構函式(destructor)

構造 函式是特殊的成員函式,其特徵如下:

1. 析構函式在類名加上字元~。

2. 析構函式無引數無返回值。

3. 乙個類有且只有乙個析構函式。若未顯示定義,系統會自動生成預設的析構函式。

4. 物件生命週期結束時,c++編譯系統系統自動呼叫析構函式。

5. 注意析構函式體內並不是刪除物件,而是做一些清理工作。

(4)賦值操作符過載

拷貝建構函式是建立的物件,使用乙個已有物件來初始化這個準備建立的物件。賦值運算子的過載是對乙個已存在的物件進行拷貝賦值。

運算子過載特徵:

1. operator+ 合法的運算子 構成函式名(過載《運算子的函式名:operator< )。

2. 過載運算子以後,不能改變運算子的優先順序/結合性/運算元個數。

在運算子過載時,在函式的引數列表中,有this指標,編譯器利用this指標記錄當前位置,但在程式中寫入this,是會報錯的。

用乙個例項看一下編譯器處理的過程:

c 物件導向基本知識

新建乙個類,預設有乙個無參建構函式,如果在類中自己定義了乙個建構函式,無論有參或無參,之前預設的那個建構函式就不存在了。this 呼叫類自己的建構函式 base 呼叫父類的建構函式 乙個類只能繼承乙個類即有乙個父類,但可以被多個類繼承。private 修飾的類成員只能在當前類內部訪問。protect...

C 的基本知識

1.按快捷鍵 win r 執行視窗 2.c 的名字讀 c sharp 它有乙個更加酷的名字 cool 3.c 原始檔以.cs為副檔名。4.using為引用 namespace 命名空間 class 類 5.c 中注釋分為三種 1 單行注釋 2 為多行注釋 3 summary 文字注釋 c 語法 co...

c 的基本知識

什麼是c c 是由c發展而來,與c相容。用c語言編寫的程式基本上可以不加修飾的用於c c 既可用於面向過程的結構化程式設計,又可以用於物件導向的程式設計,是乙個功能強大的混合型的程式語言。c 對c的 增強 表現在兩個方面 1 在原來面向過程的機制基礎上,對c語言的功能做了不少補充。2 增加了物件導向...