C 物件導向的特性 封裝知識點一

2021-10-10 04:54:04 字數 2081 閱讀 1369

一、封裝

封裝的意義:

將屬性和行為作為乙個整體,表現生活中的事物,將屬性和行為加以許可權控制

1、在設計類的時候,屬性和行為寫在一起,表現事物。

2、語法: class 類名;

3、類在設計時,可以把屬性和行為放在不同的許可權下,加以控制

訪問許可權有三種:

public 公共許可權

protected 保護許可權

private 私有許可權

4、成員屬性設定為私有

優點1:將所有成員屬性設定為私有,可以自己控制讀寫許可權

優點2:對於寫許可權,我們可以檢測資料的有效性

struct和class區別

在c++中 struct和class唯一的區別就在於 預設的訪問許可權不同

區別:struct 預設許可權為公共

class 預設許可權為私有

二、建構函式和析構函式

物件的初始化和清理也是兩個非常重要的安全問題

乙個物件或者變數沒有初始狀態,對其使用後果是未知

同樣的使用完乙個物件或變數,沒有及時清理,也會造成一定的安全問題。

c++利用了建構函式和析構函式解決上述問題,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。

物件的初始化和清理工作是編譯器強制要我們做的事情,因此如果我們不提供構造和析構,編譯器會提供。

編譯器提供的建構函式和析構函式是空實現。

建構函式:主要作用在於建立物件時為物件的成員屬性賦值,建構函式由編譯器自動呼叫,無須手動呼叫。

析構函式:主要作用在於物件銷毀前系統自動呼叫,執行一些清理工作。

(1)建構函式語法: 類名(){}

建構函式,沒有返回值也不寫void

函式名稱與類名相同

建構函式可以有引數,因此可以發生過載

程式在呼叫物件時候會自動呼叫構造,無須手動呼叫,而且只會呼叫一次

(2)析構函式語法: ~類名(){}

析構函式,沒有返回值也不寫void

函式名稱與類名相同,在名稱前加上符號 ~

析構函式不可以有引數,因此不可以發生過載

程式在物件銷毀前會自動呼叫析構,無須手動呼叫,而且只會呼叫一次

(3)建構函式的分類及呼叫

兩種分類方式:

按引數分為: 有參構造和無參構造

按型別分為: 普通構造和拷貝構造

三種呼叫方式:

1.括號法

2.顯示法

3.隱式轉換法

(4)拷貝構造函式呼叫時機

c++中拷貝構造函式呼叫時機通常有三種情況:

使用乙個已經建立完畢的物件來初始化乙個新物件,

值傳遞的方式給函式引數傳值,

以值方式返回區域性物件;

(5)構造函式呼叫規則

預設情況下,c++編譯器至少給乙個類新增3個函式

1.預設建構函式(無參,函式體為空)

2.預設析構函式(無參,函式體為空)

3.預設拷貝建構函式,對屬性進行值拷貝

構造函式呼叫規則如下:

如果使用者定義有參建構函式,c++不在提供預設無參構造,但是會提供預設拷貝構造

如果使用者定義拷貝建構函式,c++不會再提供其他建構函式

(6)深拷貝與淺拷貝

淺拷貝:簡單的賦值拷貝操作

深拷貝:在堆區重新申請空間,進行拷貝操作

總結:如果屬性有在堆區開闢的,一定要自己提供拷貝建構函式,防止淺拷貝帶來的問題

(7)初始化列表

c++提供了初始化列表語法,用來初始化屬性

語法: 建構函式():屬性1(值1),屬性2(值2)… {}

(8) 類物件作為類成員

c++類中的成員可以是另乙個類的物件,我們稱該成員為 物件成員

(9)靜態成員

靜態成員就是在成員變數和成員函式前加上關鍵字static,稱為靜態成員

靜態成員分為:

1.靜態成員變數

2.所有物件共享同乙份資料

3.在編譯階段分配記憶體

4.類內宣告,類外初始化

靜態成員函式

1.所有物件共享同乙個函式

2.靜態成員函式只能訪問靜態成員變數

物件導向知識點總結

1 物件導向的特徵 物件導向的三個基本特徵是 封裝 繼承 多型。封裝 也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。繼承 物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種能力 它可以使用現有類的所有功能,並在無需...

物件導向相關知識點

在了解物件導向程式設計之前首先要先了解程式設計中兩大思想 面向過程 物件導向 面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候再乙個乙個的依次呼叫就可以了。舉個栗子 將大象裝進冰箱,面向過程做法 開啟冰箱門 大象裝進去 關上冰箱門 面向過程,就是按照我們分析好了的...

C 物件導向知識點十二 多型

物件導向的三大特性 封裝性是基礎,繼承性是關鍵,而多型性是補充。多型是建立在虛函式的基礎之上的。靜態多型 函式過載,運算子過載,函式模板和類模板 動態多型 也稱為執行時多型,即在程式執行時刻才能決定的東西。靜態聯編 聯編出現在編譯連線階段,又稱為早期聯編,以實現靜態多型。動態聯編 程式中若出現函式呼...