物件導向三大特性以及C 成員函式

2021-08-19 20:13:58 字數 2544 閱讀 5601

一 、 物件導向

1.1物件導向程式設計

概念:物件導向程式設計是乙個種程式設計范型,也是乙個程式開發的方法。

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

c++ 不是純物件導向語言,而是基於物件導向的語音  (因為c++包含了c的部分,而c是面向過程)

1.2物件導向的三大特性:

封裝、繼承、多型

什麼是封裝?

答:封裝就是把所有細節都隱藏起來,只留下簡單的介面提供給呼叫者。他的好處就是在增加了安全性,使用著不必了解具體實現的細節,通過成員充當類與外部的介面,使用不同類之間的影響講降到了最低。

什麼是繼承?

什麼是多型?

二、類

定義乙個簡單的類:

訪問限定符(訪問許可權):

public 公有

protect 保護

private   私有          

訪問限定符簡介:    

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

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

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

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

三、類的大小

1.首先,類大小的計算遵循結構體的記憶體對齊原則類的大小與普通資料成員有關,與成員函式和靜態成員無關。即普通成員函式,靜態成員函式,靜態資料成員,靜態常量資料成員均對類的大小無影響。

2.虛函式對類的大小有影響,是因為虛函式表指標帶來的影響。

3.虛繼承對類的大小有影響,是因為虛基表指標帶來的影響

4.空類的大小是乙個特殊情況,空類的大小為1

為什麼要記憶體對齊呢?

就讀取速度而言,顯然記憶體讀取更快更準。圖例中的不對齊,讀取資料_i讀了兩次,對齊後的,一次就能讀取。讀取速度也影響了程式的執行速度。

記憶體對齊的好處就在以空間換時間,適當的捨棄記憶體空間從而提高程式執行的效率。

四、類的預設成員函式

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).【賦值運算子過載】

為了增強程式的可讀性,c++支援運算子過載。

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

運算子過載特徵:     

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

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

c++不能過載的運算子:  .*/::/sizeof/?:/.

C 物件導向三大特性

封裝就是將成員變數和成員方法等集合在乙個個的類中,通過給類及類中的成員變數 屬性和方法設定不同的訪問修飾符 public protected internal protected internal private 來控制它們的作用範圍,使用時呼叫它的方法,或者給它的變數賦值。封裝的意義在於保護或者防...

物件導向三大特性

什麼是物件導向呢?之前我們做一件事的時候,常常是確定,先幹什麼,然後怎麼做,最後可以完事了。其實我們不妨這麼想一下,我們做事的時候是可以這樣的 這件事中涉及了什麼物件角色?如果我要把這件事做成那麼就需要物件之間是如何協作的?第二種方法,就是今天說的物件導向的方法了,好處正在慢慢體會。今天我想說的物件...

物件導向三大特性

0x00 嘮嘮叨叨 只是做乙個概念的記錄 0x01 物件導向的三大特性 n 封裝 把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。類將成員變數和成員函式封裝在類的內部,根據需要設定訪問許可權,通過成員函式管理內部狀態。n 繼承 繼承所表達的是類...